summaryrefslogtreecommitdiffabout
path: root/korganizer
Unidiff
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp11
-rw-r--r--korganizer/calendarview.h1
-rw-r--r--korganizer/koeventviewer.cpp29
-rw-r--r--korganizer/koeventviewer.h1
-rw-r--r--korganizer/koeventviewerdialog.cpp14
-rw-r--r--korganizer/koeventviewerdialog.h1
-rw-r--r--korganizer/koviewmanager.cpp7
-rw-r--r--korganizer/koviewmanager.h1
-rw-r--r--korganizer/mainwindow.cpp16
-rw-r--r--korganizer/navigatorbar.cpp15
10 files changed, 86 insertions, 10 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index a330414..0015bd6 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -2406,1699 +2406,1708 @@ void CalendarView::removeCategories()
2406 } 2406 }
2407} 2407}
2408 2408
2409int CalendarView::addCategories() 2409int CalendarView::addCategories()
2410{ 2410{
2411 QPtrList<Incidence> incList = mCalendar->rawIncidences(); 2411 QPtrList<Incidence> incList = mCalendar->rawIncidences();
2412 QStringList catList = KOPrefs::instance()->mCustomCategories; 2412 QStringList catList = KOPrefs::instance()->mCustomCategories;
2413 QStringList catIncList; 2413 QStringList catIncList;
2414 Incidence* inc = incList.first(); 2414 Incidence* inc = incList.first();
2415 int i; 2415 int i;
2416 int count = 0; 2416 int count = 0;
2417 while ( inc ) { 2417 while ( inc ) {
2418 catIncList = inc->categories() ; 2418 catIncList = inc->categories() ;
2419 for( i = 0; i< catIncList.count(); ++i ) { 2419 for( i = 0; i< catIncList.count(); ++i ) {
2420 if ( !catList.contains (catIncList[i])) { 2420 if ( !catList.contains (catIncList[i])) {
2421 catList.append( catIncList[i] ); 2421 catList.append( catIncList[i] );
2422 //qDebug("add cat %s ", catIncList[i].latin1()); 2422 //qDebug("add cat %s ", catIncList[i].latin1());
2423 ++count; 2423 ++count;
2424 } 2424 }
2425 } 2425 }
2426 inc = incList.next(); 2426 inc = incList.next();
2427 } 2427 }
2428 catList.sort(); 2428 catList.sort();
2429 KOPrefs::instance()->mCustomCategories = catList; 2429 KOPrefs::instance()->mCustomCategories = catList;
2430 return count; 2430 return count;
2431} 2431}
2432 2432
2433void CalendarView::manageCategories() 2433void CalendarView::manageCategories()
2434{ 2434{
2435 KOCatPrefs* cp = new KOCatPrefs(); 2435 KOCatPrefs* cp = new KOCatPrefs();
2436 cp->show(); 2436 cp->show();
2437 int w =cp->sizeHint().width() ; 2437 int w =cp->sizeHint().width() ;
2438 int h = cp->sizeHint().height() ; 2438 int h = cp->sizeHint().height() ;
2439 int dw = QApplication::desktop()->width(); 2439 int dw = QApplication::desktop()->width();
2440 int dh = QApplication::desktop()->height(); 2440 int dh = QApplication::desktop()->height();
2441 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2441 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2442 if ( !cp->exec() ) { 2442 if ( !cp->exec() ) {
2443 delete cp; 2443 delete cp;
2444 return; 2444 return;
2445 } 2445 }
2446 int count = 0; 2446 int count = 0;
2447 if ( cp->addCat() ) { 2447 if ( cp->addCat() ) {
2448 count = addCategories(); 2448 count = addCategories();
2449 if ( count ) { 2449 if ( count ) {
2450 topLevelWidget()->setCaption(QString::number( count )+ i18n(" Categories added to list! ")); 2450 topLevelWidget()->setCaption(QString::number( count )+ i18n(" Categories added to list! "));
2451 writeSettings(); 2451 writeSettings();
2452 } else 2452 } else
2453 topLevelWidget()->setCaption(QString::number( 0 )+ i18n(" Categories added to list! ")); 2453 topLevelWidget()->setCaption(QString::number( 0 )+ i18n(" Categories added to list! "));
2454 } else { 2454 } else {
2455 removeCategories(); 2455 removeCategories();
2456 updateView(); 2456 updateView();
2457 } 2457 }
2458 delete cp; 2458 delete cp;
2459} 2459}
2460 2460
2461void CalendarView::beamIncidence(Incidence * Inc) 2461void CalendarView::beamIncidence(Incidence * Inc)
2462{ 2462{
2463 QPtrList<Incidence> delSel ; 2463 QPtrList<Incidence> delSel ;
2464 delSel.append(Inc); 2464 delSel.append(Inc);
2465 beamIncidenceList( delSel ); 2465 beamIncidenceList( delSel );
2466} 2466}
2467void CalendarView::beamCalendar() 2467void CalendarView::beamCalendar()
2468{ 2468{
2469 QPtrList<Incidence> delSel = mCalendar->rawIncidences(); 2469 QPtrList<Incidence> delSel = mCalendar->rawIncidences();
2470 //qDebug("beamCalendar() "); 2470 //qDebug("beamCalendar() ");
2471 beamIncidenceList( delSel ); 2471 beamIncidenceList( delSel );
2472} 2472}
2473void CalendarView::beamFilteredCalendar() 2473void CalendarView::beamFilteredCalendar()
2474{ 2474{
2475 QPtrList<Incidence> delSel = mCalendar->incidences(); 2475 QPtrList<Incidence> delSel = mCalendar->incidences();
2476 //qDebug("beamFilteredCalendar() "); 2476 //qDebug("beamFilteredCalendar() ");
2477 beamIncidenceList( delSel ); 2477 beamIncidenceList( delSel );
2478} 2478}
2479void CalendarView::beamIncidenceList(QPtrList<Incidence> delSel ) 2479void CalendarView::beamIncidenceList(QPtrList<Incidence> delSel )
2480{ 2480{
2481 if ( beamDialog->exec () == QDialog::Rejected ) 2481 if ( beamDialog->exec () == QDialog::Rejected )
2482 return; 2482 return;
2483#ifdef DESKTOP_VERSION 2483#ifdef DESKTOP_VERSION
2484 QString fn = locateLocal( "tmp", "kopibeamfile" ); 2484 QString fn = locateLocal( "tmp", "kopibeamfile" );
2485#else 2485#else
2486 QString fn = "/tmp/kopibeamfile"; 2486 QString fn = "/tmp/kopibeamfile";
2487#endif 2487#endif
2488 QString mes; 2488 QString mes;
2489 bool createbup = true; 2489 bool createbup = true;
2490 if ( createbup ) { 2490 if ( createbup ) {
2491 QString description = "\n"; 2491 QString description = "\n";
2492 CalendarLocal* cal = new CalendarLocal(); 2492 CalendarLocal* cal = new CalendarLocal();
2493 if ( beamDialog->beamLocal() ) 2493 if ( beamDialog->beamLocal() )
2494 cal->setLocalTime(); 2494 cal->setLocalTime();
2495 else 2495 else
2496 cal->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 2496 cal->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
2497 Incidence *incidence = delSel.first(); 2497 Incidence *incidence = delSel.first();
2498 bool addText = false; 2498 bool addText = false;
2499 if ( delSel.count() < 10 ) 2499 if ( delSel.count() < 10 )
2500 addText = true; 2500 addText = true;
2501 else { 2501 else {
2502 description.sprintf(i18n(" %d items?"),delSel.count() ); 2502 description.sprintf(i18n(" %d items?"),delSel.count() );
2503 } 2503 }
2504 while ( incidence ) { 2504 while ( incidence ) {
2505 Incidence *in = incidence->clone(); 2505 Incidence *in = incidence->clone();
2506 if ( ! in->summary().isEmpty() ) { 2506 if ( ! in->summary().isEmpty() ) {
2507 in->setDescription(""); 2507 in->setDescription("");
2508 } else { 2508 } else {
2509 in->setSummary( in->description().left(20)); 2509 in->setSummary( in->description().left(20));
2510 in->setDescription(""); 2510 in->setDescription("");
2511 } 2511 }
2512 if ( addText ) 2512 if ( addText )
2513 description += in->summary() + "\n"; 2513 description += in->summary() + "\n";
2514 cal->addIncidence( in ); 2514 cal->addIncidence( in );
2515 incidence = delSel.next(); 2515 incidence = delSel.next();
2516 } 2516 }
2517 if ( beamDialog->beamVcal() ) { 2517 if ( beamDialog->beamVcal() ) {
2518 fn += ".vcs"; 2518 fn += ".vcs";
2519 FileStorage storage( cal, fn, new VCalFormat ); 2519 FileStorage storage( cal, fn, new VCalFormat );
2520 storage.save(); 2520 storage.save();
2521 } else { 2521 } else {
2522 fn += ".ics"; 2522 fn += ".ics";
2523 FileStorage storage( cal, fn, new ICalFormat( ) ); 2523 FileStorage storage( cal, fn, new ICalFormat( ) );
2524 storage.save(); 2524 storage.save();
2525 } 2525 }
2526 delete cal; 2526 delete cal;
2527 mes = i18n("KO/Pi: Ready for beaming"); 2527 mes = i18n("KO/Pi: Ready for beaming");
2528 topLevelWidget()->setCaption(mes); 2528 topLevelWidget()->setCaption(mes);
2529 KApplication::convert2latin1( fn ); 2529 KApplication::convert2latin1( fn );
2530#ifndef DESKTOP_VERSION 2530#ifndef DESKTOP_VERSION
2531 Ir *ir = new Ir( this ); 2531 Ir *ir = new Ir( this );
2532 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) ); 2532 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) );
2533 ir->send( fn, description, "text/x-vCalendar" ); 2533 ir->send( fn, description, "text/x-vCalendar" );
2534#endif 2534#endif
2535 } 2535 }
2536} 2536}
2537void CalendarView::beamDone( Ir *ir ) 2537void CalendarView::beamDone( Ir *ir )
2538{ 2538{
2539#ifndef DESKTOP_VERSION 2539#ifndef DESKTOP_VERSION
2540 delete ir; 2540 delete ir;
2541#endif 2541#endif
2542 topLevelWidget()->setCaption( i18n("KO/Pi: Beaming done.") ); 2542 topLevelWidget()->setCaption( i18n("KO/Pi: Beaming done.") );
2543 topLevelWidget()->raise(); 2543 topLevelWidget()->raise();
2544} 2544}
2545 2545
2546void CalendarView::moveIncidence(Incidence * inc ) 2546void CalendarView::moveIncidence(Incidence * inc )
2547{ 2547{
2548 if ( !inc ) return; 2548 if ( !inc ) return;
2549 showDatePickerPopup(); 2549 showDatePickerPopup();
2550 mDatePickerMode = 2; 2550 mDatePickerMode = 2;
2551 mMoveIncidence = inc ; 2551 mMoveIncidence = inc ;
2552 QDate da; 2552 QDate da;
2553 if ( mMoveIncidence->type() == "Todo" ) { 2553 if ( mMoveIncidence->type() == "Todo" ) {
2554 Todo * to = (Todo *) mMoveIncidence; 2554 Todo * to = (Todo *) mMoveIncidence;
2555 if ( to->hasDueDate() ) 2555 if ( to->hasDueDate() )
2556 da = to->dtDue().date(); 2556 da = to->dtDue().date();
2557 else 2557 else
2558 da = QDate::currentDate(); 2558 da = QDate::currentDate();
2559 } else { 2559 } else {
2560 da = mMoveIncidence->dtStart().date(); 2560 da = mMoveIncidence->dtStart().date();
2561 } 2561 }
2562 //PENDING set date for recurring incidence to date of recurrence 2562 //PENDING set date for recurring incidence to date of recurrence
2563 //mMoveIncidenceOldDate; 2563 //mMoveIncidenceOldDate;
2564 mDatePicker->setDate( da ); 2564 mDatePicker->setDate( da );
2565} 2565}
2566void CalendarView::showDatePickerPopup() 2566void CalendarView::showDatePickerPopup()
2567{ 2567{
2568 if ( mDateFrame->isVisible() ) 2568 if ( mDateFrame->isVisible() )
2569 mDateFrame->hide(); 2569 mDateFrame->hide();
2570 else { 2570 else {
2571 int offX = 0, offY = 0; 2571 int offX = 0, offY = 0;
2572#ifdef DESKTOP_VERSION 2572#ifdef DESKTOP_VERSION
2573 int w =mDatePicker->sizeHint().width() ; 2573 int w =mDatePicker->sizeHint().width() ;
2574 int h = mDatePicker->sizeHint().height() ; 2574 int h = mDatePicker->sizeHint().height() ;
2575 int dw = topLevelWidget()->width(); 2575 int dw = topLevelWidget()->width();
2576 int dh = topLevelWidget()->height(); 2576 int dh = topLevelWidget()->height();
2577 offX = topLevelWidget()->x(); 2577 offX = topLevelWidget()->x();
2578 offY = topLevelWidget()->y(); 2578 offY = topLevelWidget()->y();
2579#else 2579#else
2580 int w =mDatePicker->sizeHint().width() ; 2580 int w =mDatePicker->sizeHint().width() ;
2581 int h = mDatePicker->sizeHint().height() ; 2581 int h = mDatePicker->sizeHint().height() ;
2582 int dw = QApplication::desktop()->width(); 2582 int dw = QApplication::desktop()->width();
2583 int dh = QApplication::desktop()->height(); 2583 int dh = QApplication::desktop()->height();
2584#endif 2584#endif
2585 mDateFrame->setGeometry( (dw-w)/2+offX, (dh - h )/2+offY ,w,h ); 2585 mDateFrame->setGeometry( (dw-w)/2+offX, (dh - h )/2+offY ,w,h );
2586 mDateFrame->show(); 2586 mDateFrame->show();
2587 } 2587 }
2588} 2588}
2589void CalendarView::showDatePicker( ) 2589void CalendarView::showDatePicker( )
2590{ 2590{
2591 showDatePickerPopup(); 2591 showDatePickerPopup();
2592 mDatePickerMode = 1; 2592 mDatePickerMode = 1;
2593 mDatePicker->setDate( mNavigator->selectedDates().first() ); 2593 mDatePicker->setDate( mNavigator->selectedDates().first() );
2594} 2594}
2595 2595
2596void CalendarView::showEventEditor() 2596void CalendarView::showEventEditor()
2597{ 2597{
2598#ifdef DESKTOP_VERSION 2598#ifdef DESKTOP_VERSION
2599 int x,y,w,h; 2599 int x,y,w,h;
2600 x = mEventEditor->geometry().x(); 2600 x = mEventEditor->geometry().x();
2601 y = mEventEditor->geometry().y(); 2601 y = mEventEditor->geometry().y();
2602 w = mEventEditor->width(); 2602 w = mEventEditor->width();
2603 h = mEventEditor->height(); 2603 h = mEventEditor->height();
2604 mEventEditor->show(); 2604 mEventEditor->show();
2605 mEventEditor->setGeometry(x,y,w,h); 2605 mEventEditor->setGeometry(x,y,w,h);
2606#else 2606#else
2607 if ( mEventEditor->width() < QApplication::desktop()->width() -60 || mEventEditor->width() > QApplication::desktop()->width() ) { 2607 if ( mEventEditor->width() < QApplication::desktop()->width() -60 || mEventEditor->width() > QApplication::desktop()->width() ) {
2608 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") ); 2608 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") );
2609 qDebug("KO: CalendarView: recreate mEventEditor %d %d", mEventEditor->width(), QApplication::desktop()->width() ); 2609 qDebug("KO: CalendarView: recreate mEventEditor %d %d", mEventEditor->width(), QApplication::desktop()->width() );
2610 qApp->processEvents(); 2610 qApp->processEvents();
2611 delete mEventEditor; 2611 delete mEventEditor;
2612 mEventEditor = mDialogManager->getEventEditor(); 2612 mEventEditor = mDialogManager->getEventEditor();
2613 topLevelWidget()->setCaption( i18n("") ); 2613 topLevelWidget()->setCaption( i18n("") );
2614 } 2614 }
2615 mEventEditor->showMaximized(); 2615 mEventEditor->showMaximized();
2616#endif 2616#endif
2617} 2617}
2618void CalendarView::showTodoEditor() 2618void CalendarView::showTodoEditor()
2619{ 2619{
2620#ifdef DESKTOP_VERSION 2620#ifdef DESKTOP_VERSION
2621 int x,y,w,h; 2621 int x,y,w,h;
2622 x = mTodoEditor->geometry().x(); 2622 x = mTodoEditor->geometry().x();
2623 y = mTodoEditor->geometry().y(); 2623 y = mTodoEditor->geometry().y();
2624 w = mTodoEditor->width(); 2624 w = mTodoEditor->width();
2625 h = mTodoEditor->height(); 2625 h = mTodoEditor->height();
2626 mTodoEditor->show(); 2626 mTodoEditor->show();
2627 mTodoEditor->setGeometry(x,y,w,h); 2627 mTodoEditor->setGeometry(x,y,w,h);
2628#else 2628#else
2629 if ( mTodoEditor->width() < QApplication::desktop()->width() -60|| mTodoEditor->width() > QApplication::desktop()->width() ) { 2629 if ( mTodoEditor->width() < QApplication::desktop()->width() -60|| mTodoEditor->width() > QApplication::desktop()->width() ) {
2630 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") ); 2630 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") );
2631 qDebug("KO: CalendarView: recreate mTodoEditor %d %d ", mTodoEditor->width() ,QApplication::desktop()->width() ); 2631 qDebug("KO: CalendarView: recreate mTodoEditor %d %d ", mTodoEditor->width() ,QApplication::desktop()->width() );
2632 qApp->processEvents(); 2632 qApp->processEvents();
2633 delete mTodoEditor; 2633 delete mTodoEditor;
2634 mTodoEditor = mDialogManager->getTodoEditor(); 2634 mTodoEditor = mDialogManager->getTodoEditor();
2635 topLevelWidget()->setCaption( i18n("") ); 2635 topLevelWidget()->setCaption( i18n("") );
2636 } 2636 }
2637 mTodoEditor->showMaximized(); 2637 mTodoEditor->showMaximized();
2638#endif 2638#endif
2639} 2639}
2640 2640
2641void CalendarView::cloneIncidence() 2641void CalendarView::cloneIncidence()
2642{ 2642{
2643 Incidence *incidence = currentSelection(); 2643 Incidence *incidence = currentSelection();
2644 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 2644 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
2645 if ( incidence ) { 2645 if ( incidence ) {
2646 cloneIncidence(incidence); 2646 cloneIncidence(incidence);
2647 } 2647 }
2648} 2648}
2649void CalendarView::moveIncidence() 2649void CalendarView::moveIncidence()
2650{ 2650{
2651 Incidence *incidence = currentSelection(); 2651 Incidence *incidence = currentSelection();
2652 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 2652 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
2653 if ( incidence ) { 2653 if ( incidence ) {
2654 moveIncidence(incidence); 2654 moveIncidence(incidence);
2655 } 2655 }
2656} 2656}
2657void CalendarView::beamIncidence() 2657void CalendarView::beamIncidence()
2658{ 2658{
2659 Incidence *incidence = currentSelection(); 2659 Incidence *incidence = currentSelection();
2660 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 2660 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
2661 if ( incidence ) { 2661 if ( incidence ) {
2662 beamIncidence(incidence); 2662 beamIncidence(incidence);
2663 } 2663 }
2664} 2664}
2665void CalendarView::toggleCancelIncidence() 2665void CalendarView::toggleCancelIncidence()
2666{ 2666{
2667 Incidence *incidence = currentSelection(); 2667 Incidence *incidence = currentSelection();
2668 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 2668 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
2669 if ( incidence ) { 2669 if ( incidence ) {
2670 cancelIncidence(incidence); 2670 cancelIncidence(incidence);
2671 } 2671 }
2672} 2672}
2673 2673
2674 2674
2675void CalendarView::cancelIncidence(Incidence * inc ) 2675void CalendarView::cancelIncidence(Incidence * inc )
2676{ 2676{
2677 inc->setCancelled( ! inc->cancelled() ); 2677 inc->setCancelled( ! inc->cancelled() );
2678 changeIncidenceDisplay( inc,KOGlobals::EVENTEDITED ); 2678 changeIncidenceDisplay( inc,KOGlobals::EVENTEDITED );
2679 updateView(); 2679 updateView();
2680} 2680}
2681void CalendarView::cloneIncidence(Incidence * orgInc ) 2681void CalendarView::cloneIncidence(Incidence * orgInc )
2682{ 2682{
2683 Incidence * newInc = orgInc->clone(); 2683 Incidence * newInc = orgInc->clone();
2684 newInc->recreate(); 2684 newInc->recreate();
2685 2685
2686 if ( newInc->type() == "Todo" ) { 2686 if ( newInc->type() == "Todo" ) {
2687 Todo* t = (Todo*) newInc; 2687 Todo* t = (Todo*) newInc;
2688 showTodoEditor(); 2688 showTodoEditor();
2689 mTodoEditor->editTodo( t ); 2689 mTodoEditor->editTodo( t );
2690 if ( mTodoEditor->exec() ) { 2690 if ( mTodoEditor->exec() ) {
2691 mCalendar->addTodo( t ); 2691 mCalendar->addTodo( t );
2692 updateView(); 2692 updateView();
2693 } else { 2693 } else {
2694 delete t; 2694 delete t;
2695 } 2695 }
2696 } 2696 }
2697 else { 2697 else {
2698 Event* e = (Event*) newInc; 2698 Event* e = (Event*) newInc;
2699 showEventEditor(); 2699 showEventEditor();
2700 mEventEditor->editEvent( e ); 2700 mEventEditor->editEvent( e );
2701 if ( mEventEditor->exec() ) { 2701 if ( mEventEditor->exec() ) {
2702 mCalendar->addEvent( e ); 2702 mCalendar->addEvent( e );
2703 updateView(); 2703 updateView();
2704 } else { 2704 } else {
2705 delete e; 2705 delete e;
2706 } 2706 }
2707 } 2707 }
2708 setActiveWindow(); 2708 setActiveWindow();
2709} 2709}
2710 2710
2711void CalendarView::newEvent() 2711void CalendarView::newEvent()
2712{ 2712{
2713 // TODO: Replace this code by a common eventDurationHint of KOBaseView. 2713 // TODO: Replace this code by a common eventDurationHint of KOBaseView.
2714 KOAgendaView *aView = mViewManager->agendaView(); 2714 KOAgendaView *aView = mViewManager->agendaView();
2715 if (aView) { 2715 if (aView) {
2716 if (aView->selectionStart().isValid()) { 2716 if (aView->selectionStart().isValid()) {
2717 if (aView->selectedIsAllDay()) { 2717 if (aView->selectedIsAllDay()) {
2718 newEvent(aView->selectionStart(),aView->selectionEnd(),true); 2718 newEvent(aView->selectionStart(),aView->selectionEnd(),true);
2719 } else { 2719 } else {
2720 newEvent(aView->selectionStart(),aView->selectionEnd()); 2720 newEvent(aView->selectionStart(),aView->selectionEnd());
2721 } 2721 }
2722 return; 2722 return;
2723 } 2723 }
2724 } 2724 }
2725 2725
2726 QDate date = mNavigator->selectedDates().first(); 2726 QDate date = mNavigator->selectedDates().first();
2727 QDateTime current = QDateTime::currentDateTime(); 2727 QDateTime current = QDateTime::currentDateTime();
2728 if ( date <= current.date() ) { 2728 if ( date <= current.date() ) {
2729 int hour = current.time().hour() +1; 2729 int hour = current.time().hour() +1;
2730 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ), 2730 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ),
2731 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 2731 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
2732 } else 2732 } else
2733 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ), 2733 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ),
2734 QDateTime( date, QTime( KOPrefs::instance()->mStartTime + 2734 QDateTime( date, QTime( KOPrefs::instance()->mStartTime +
2735 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 2735 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
2736} 2736}
2737 2737
2738void CalendarView::newEvent(QDateTime fh) 2738void CalendarView::newEvent(QDateTime fh)
2739{ 2739{
2740 newEvent(fh, 2740 newEvent(fh,
2741 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration))); 2741 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration)));
2742} 2742}
2743 2743
2744void CalendarView::newEvent(QDate dt) 2744void CalendarView::newEvent(QDate dt)
2745{ 2745{
2746 newEvent(QDateTime(dt, QTime(0,0,0)), 2746 newEvent(QDateTime(dt, QTime(0,0,0)),
2747 QDateTime(dt, QTime(0,0,0)), true); 2747 QDateTime(dt, QTime(0,0,0)), true);
2748} 2748}
2749void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint) 2749void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint)
2750{ 2750{
2751 newEvent(fromHint, toHint, false); 2751 newEvent(fromHint, toHint, false);
2752} 2752}
2753void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay) 2753void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay)
2754{ 2754{
2755 2755
2756 showEventEditor(); 2756 showEventEditor();
2757 mEventEditor->newEvent(fromHint,toHint,allDay); 2757 mEventEditor->newEvent(fromHint,toHint,allDay);
2758 if ( mFilterView->filtersEnabled() ) { 2758 if ( mFilterView->filtersEnabled() ) {
2759 CalFilter *filter = mFilterView->selectedFilter(); 2759 CalFilter *filter = mFilterView->selectedFilter();
2760 if (filter && filter->showCategories()) { 2760 if (filter && filter->showCategories()) {
2761 mEventEditor->setCategories(filter->categoryList().join(",") ); 2761 mEventEditor->setCategories(filter->categoryList().join(",") );
2762 } 2762 }
2763 if ( filter ) 2763 if ( filter )
2764 mEventEditor->setSecrecy( filter->getSecrecy() ); 2764 mEventEditor->setSecrecy( filter->getSecrecy() );
2765 } 2765 }
2766 mEventEditor->exec(); 2766 mEventEditor->exec();
2767 setActiveWindow(); 2767 setActiveWindow();
2768} 2768}
2769void CalendarView::todoAdded(Todo * t) 2769void CalendarView::todoAdded(Todo * t)
2770{ 2770{
2771 2771
2772 changeTodoDisplay ( t ,KOGlobals::EVENTADDED); 2772 changeTodoDisplay ( t ,KOGlobals::EVENTADDED);
2773 updateTodoViews(); 2773 updateTodoViews();
2774} 2774}
2775void CalendarView::todoChanged(Todo * t) 2775void CalendarView::todoChanged(Todo * t)
2776{ 2776{
2777 emit todoModified( t, 4 ); 2777 emit todoModified( t, 4 );
2778 // updateTodoViews(); 2778 // updateTodoViews();
2779} 2779}
2780void CalendarView::todoToBeDeleted(Todo *) 2780void CalendarView::todoToBeDeleted(Todo *)
2781{ 2781{
2782 //qDebug("todoToBeDeleted(Todo *) "); 2782 //qDebug("todoToBeDeleted(Todo *) ");
2783 updateTodoViews(); 2783 updateTodoViews();
2784} 2784}
2785void CalendarView::todoDeleted() 2785void CalendarView::todoDeleted()
2786{ 2786{
2787 //qDebug(" todoDeleted()"); 2787 //qDebug(" todoDeleted()");
2788 updateTodoViews(); 2788 updateTodoViews();
2789} 2789}
2790 2790
2791 2791
2792void CalendarView::newTodoDateTime( QDateTime dt, bool allday ) 2792void CalendarView::newTodoDateTime( QDateTime dt, bool allday )
2793{ 2793{
2794 showTodoEditor(); 2794 showTodoEditor();
2795 mTodoEditor->newTodo(dt,0,allday); 2795 mTodoEditor->newTodo(dt,0,allday);
2796 if ( mFilterView->filtersEnabled() ) { 2796 if ( mFilterView->filtersEnabled() ) {
2797 CalFilter *filter = mFilterView->selectedFilter(); 2797 CalFilter *filter = mFilterView->selectedFilter();
2798 if (filter && filter->showCategories()) { 2798 if (filter && filter->showCategories()) {
2799 mTodoEditor->setCategories(filter->categoryList().join(",") ); 2799 mTodoEditor->setCategories(filter->categoryList().join(",") );
2800 } 2800 }
2801 if ( filter ) 2801 if ( filter )
2802 mTodoEditor->setSecrecy( filter->getSecrecy() ); 2802 mTodoEditor->setSecrecy( filter->getSecrecy() );
2803 } 2803 }
2804 mTodoEditor->exec(); 2804 mTodoEditor->exec();
2805 setActiveWindow(); 2805 setActiveWindow();
2806} 2806}
2807 2807
2808void CalendarView::newTodo() 2808void CalendarView::newTodo()
2809{ 2809{
2810 newTodoDateTime( QDateTime(),true ); 2810 newTodoDateTime( QDateTime(),true );
2811} 2811}
2812 2812
2813void CalendarView::newSubTodo() 2813void CalendarView::newSubTodo()
2814{ 2814{
2815 Todo *todo = selectedTodo(); 2815 Todo *todo = selectedTodo();
2816 if ( todo ) newSubTodo( todo ); 2816 if ( todo ) newSubTodo( todo );
2817} 2817}
2818 2818
2819void CalendarView::newSubTodo(Todo *parentEvent) 2819void CalendarView::newSubTodo(Todo *parentEvent)
2820{ 2820{
2821 2821
2822 showTodoEditor(); 2822 showTodoEditor();
2823 mTodoEditor->newTodo(QDateTime(),parentEvent,true); 2823 mTodoEditor->newTodo(QDateTime(),parentEvent,true);
2824 mTodoEditor->exec(); 2824 mTodoEditor->exec();
2825 setActiveWindow(); 2825 setActiveWindow();
2826} 2826}
2827 2827
2828void CalendarView::newFloatingEvent() 2828void CalendarView::newFloatingEvent()
2829{ 2829{
2830 DateList tmpList = mNavigator->selectedDates(); 2830 DateList tmpList = mNavigator->selectedDates();
2831 QDate date = tmpList.first(); 2831 QDate date = tmpList.first();
2832 2832
2833 newEvent( QDateTime( date, QTime( 12, 0, 0 ) ), 2833 newEvent( QDateTime( date, QTime( 12, 0, 0 ) ),
2834 QDateTime( date, QTime( 12, 0, 0 ) ), true ); 2834 QDateTime( date, QTime( 12, 0, 0 ) ), true );
2835} 2835}
2836 2836
2837 2837
2838void CalendarView::editEvent( Event *event ) 2838void CalendarView::editEvent( Event *event )
2839{ 2839{
2840 2840
2841 if ( !event ) return; 2841 if ( !event ) return;
2842 if ( event->isReadOnly() ) { 2842 if ( event->isReadOnly() ) {
2843 showEvent( event ); 2843 showEvent( event );
2844 return; 2844 return;
2845 } 2845 }
2846 showEventEditor(); 2846 showEventEditor();
2847 mEventEditor->editEvent( event , mFlagEditDescription); 2847 mEventEditor->editEvent( event , mFlagEditDescription);
2848 mEventEditor->exec(); 2848 mEventEditor->exec();
2849 setActiveWindow(); 2849 setActiveWindow();
2850 2850
2851} 2851}
2852void CalendarView::editJournal( Journal *jour ) 2852void CalendarView::editJournal( Journal *jour )
2853{ 2853{
2854 if ( !jour ) return; 2854 if ( !jour ) return;
2855 mDialogManager->hideSearchDialog(); 2855 mDialogManager->hideSearchDialog();
2856 mViewManager->showJournalView(); 2856 mViewManager->showJournalView();
2857 mNavigator->slotDaySelect( jour->dtStart().date() ); 2857 mNavigator->slotDaySelect( jour->dtStart().date() );
2858} 2858}
2859void CalendarView::editTodo( Todo *todo ) 2859void CalendarView::editTodo( Todo *todo )
2860{ 2860{
2861 if ( !todo ) return; 2861 if ( !todo ) return;
2862 2862
2863 if ( todo->isReadOnly() ) { 2863 if ( todo->isReadOnly() ) {
2864 showTodo( todo ); 2864 showTodo( todo );
2865 return; 2865 return;
2866 } 2866 }
2867 showTodoEditor(); 2867 showTodoEditor();
2868 mTodoEditor->editTodo( todo ,mFlagEditDescription); 2868 mTodoEditor->editTodo( todo ,mFlagEditDescription);
2869 mTodoEditor->exec(); 2869 mTodoEditor->exec();
2870 setActiveWindow(); 2870 setActiveWindow();
2871 2871
2872} 2872}
2873 2873
2874KOEventViewerDialog* CalendarView::getEventViewerDialog() 2874KOEventViewerDialog* CalendarView::getEventViewerDialog()
2875{ 2875{
2876 if ( !mEventViewerDialog ) { 2876 if ( !mEventViewerDialog ) {
2877 mEventViewerDialog = new KOEventViewerDialog(0); 2877 mEventViewerDialog = new KOEventViewerDialog(0);
2878 connect( mEventViewerDialog, SIGNAL( editIncidence( Incidence* )), this, SLOT(editIncidence( Incidence* ) ) ); 2878 connect( mEventViewerDialog, SIGNAL( editIncidence( Incidence* )), this, SLOT(editIncidence( Incidence* ) ) );
2879 connect( this, SIGNAL(configChanged()), mEventViewerDialog, SLOT(updateConfig())); 2879 connect( this, SIGNAL(configChanged()), mEventViewerDialog, SLOT(updateConfig()));
2880 connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)), 2880 connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)),
2881 dateNavigator(), SLOT( selectWeek( const QDate & ) ) ); 2881 dateNavigator(), SLOT( selectWeek( const QDate & ) ) );
2882 connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ), 2882 connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ),
2883 viewManager(), SLOT( showAgendaView( bool ) ) ); 2883 viewManager(), SLOT( showAgendaView( bool ) ) );
2884 connect( mEventViewerDialog, SIGNAL(signalViewerClosed()), 2884 connect( mEventViewerDialog, SIGNAL(signalViewerClosed()),
2885 this, SLOT( slotViewerClosed() ) ); 2885 this, SLOT( slotViewerClosed() ) );
2886 connect( mEventViewerDialog, SIGNAL( todoCompleted(Todo *) ), 2886 connect( mEventViewerDialog, SIGNAL( todoCompleted(Todo *) ),
2887 this, SLOT( todoChanged(Todo *) ) ); 2887 this, SLOT( todoChanged(Todo *) ) );
2888 mEventViewerDialog->resize( 640, 480 ); 2888 mEventViewerDialog->resize( 640, 480 );
2889 2889
2890 } 2890 }
2891 return mEventViewerDialog; 2891 return mEventViewerDialog;
2892} 2892}
2893void CalendarView::showEvent(Event *event) 2893void CalendarView::showEvent(Event *event)
2894{ 2894{
2895 getEventViewerDialog()->setEvent(event); 2895 getEventViewerDialog()->setEvent(event);
2896 getEventViewerDialog()->showMe(); 2896 getEventViewerDialog()->showMe();
2897} 2897}
2898 2898
2899void CalendarView::showTodo(Todo *event) 2899void CalendarView::showTodo(Todo *event)
2900{ 2900{
2901 getEventViewerDialog()->setTodo(event); 2901 getEventViewerDialog()->setTodo(event);
2902 getEventViewerDialog()->showMe(); 2902 getEventViewerDialog()->showMe();
2903} 2903}
2904void CalendarView::showJournal( Journal *jour ) 2904void CalendarView::showJournal( Journal *jour )
2905{ 2905{
2906 getEventViewerDialog()->setJournal(jour); 2906 getEventViewerDialog()->setJournal(jour);
2907 getEventViewerDialog()->showMe(); 2907 getEventViewerDialog()->showMe();
2908 2908
2909} 2909}
2910// void CalendarView::todoModified (Todo *event, int changed) 2910// void CalendarView::todoModified (Todo *event, int changed)
2911// { 2911// {
2912// // if (mDialogList.find (event) != mDialogList.end ()) { 2912// // if (mDialogList.find (event) != mDialogList.end ()) {
2913// // kdDebug() << "Todo modified and open" << endl; 2913// // kdDebug() << "Todo modified and open" << endl;
2914// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event]; 2914// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event];
2915// // temp->modified (changed); 2915// // temp->modified (changed);
2916 2916
2917// // } 2917// // }
2918 2918
2919// mViewManager->updateView(); 2919// mViewManager->updateView();
2920// } 2920// }
2921 2921
2922void CalendarView::appointment_show() 2922void CalendarView::appointment_show()
2923{ 2923{
2924 Event *anEvent = 0; 2924 Event *anEvent = 0;
2925 2925
2926 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2926 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2927 2927
2928 if (mViewManager->currentView()->isEventView()) { 2928 if (mViewManager->currentView()->isEventView()) {
2929 if ( incidence && incidence->type() == "Event" ) { 2929 if ( incidence && incidence->type() == "Event" ) {
2930 anEvent = static_cast<Event *>(incidence); 2930 anEvent = static_cast<Event *>(incidence);
2931 } 2931 }
2932 } 2932 }
2933 2933
2934 if (!anEvent) { 2934 if (!anEvent) {
2935 KNotifyClient::beep(); 2935 KNotifyClient::beep();
2936 return; 2936 return;
2937 } 2937 }
2938 2938
2939 showEvent(anEvent); 2939 showEvent(anEvent);
2940} 2940}
2941 2941
2942void CalendarView::appointment_edit() 2942void CalendarView::appointment_edit()
2943{ 2943{
2944 Event *anEvent = 0; 2944 Event *anEvent = 0;
2945 2945
2946 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2946 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2947 2947
2948 if (mViewManager->currentView()->isEventView()) { 2948 if (mViewManager->currentView()->isEventView()) {
2949 if ( incidence && incidence->type() == "Event" ) { 2949 if ( incidence && incidence->type() == "Event" ) {
2950 anEvent = static_cast<Event *>(incidence); 2950 anEvent = static_cast<Event *>(incidence);
2951 } 2951 }
2952 } 2952 }
2953 2953
2954 if (!anEvent) { 2954 if (!anEvent) {
2955 KNotifyClient::beep(); 2955 KNotifyClient::beep();
2956 return; 2956 return;
2957 } 2957 }
2958 2958
2959 editEvent(anEvent); 2959 editEvent(anEvent);
2960} 2960}
2961 2961
2962void CalendarView::appointment_delete() 2962void CalendarView::appointment_delete()
2963{ 2963{
2964 Event *anEvent = 0; 2964 Event *anEvent = 0;
2965 2965
2966 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2966 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2967 2967
2968 if (mViewManager->currentView()->isEventView()) { 2968 if (mViewManager->currentView()->isEventView()) {
2969 if ( incidence && incidence->type() == "Event" ) { 2969 if ( incidence && incidence->type() == "Event" ) {
2970 anEvent = static_cast<Event *>(incidence); 2970 anEvent = static_cast<Event *>(incidence);
2971 } 2971 }
2972 } 2972 }
2973 2973
2974 if (!anEvent) { 2974 if (!anEvent) {
2975 KNotifyClient::beep(); 2975 KNotifyClient::beep();
2976 return; 2976 return;
2977 } 2977 }
2978 2978
2979 deleteEvent(anEvent); 2979 deleteEvent(anEvent);
2980} 2980}
2981 2981
2982void CalendarView::todo_resub( Todo * parent, Todo * sub ) 2982void CalendarView::todo_resub( Todo * parent, Todo * sub )
2983{ 2983{
2984 if (!sub) return; 2984 if (!sub) return;
2985 if (!parent) return; 2985 if (!parent) return;
2986 if ( sub->relatedTo() ) 2986 if ( sub->relatedTo() )
2987 sub->relatedTo()->removeRelation(sub); 2987 sub->relatedTo()->removeRelation(sub);
2988 sub->setRelatedTo(parent); 2988 sub->setRelatedTo(parent);
2989 sub->setRelatedToUid(parent->uid()); 2989 sub->setRelatedToUid(parent->uid());
2990 parent->addRelation(sub); 2990 parent->addRelation(sub);
2991 sub->updated(); 2991 sub->updated();
2992 parent->updated(); 2992 parent->updated();
2993 setModified(true); 2993 setModified(true);
2994 updateView(); 2994 updateView();
2995} 2995}
2996void CalendarView::todo_unsub(Todo *anTodo ) 2996void CalendarView::todo_unsub(Todo *anTodo )
2997{ 2997{
2998 // Todo *anTodo = selectedTodo(); 2998 // Todo *anTodo = selectedTodo();
2999 if (!anTodo) return; 2999 if (!anTodo) return;
3000 if (!anTodo->relatedTo()) return; 3000 if (!anTodo->relatedTo()) return;
3001 anTodo->relatedTo()->removeRelation(anTodo); 3001 anTodo->relatedTo()->removeRelation(anTodo);
3002 anTodo->setRelatedTo(0); 3002 anTodo->setRelatedTo(0);
3003 anTodo->updated(); 3003 anTodo->updated();
3004 anTodo->setRelatedToUid(""); 3004 anTodo->setRelatedToUid("");
3005 setModified(true); 3005 setModified(true);
3006 updateView(); 3006 updateView();
3007} 3007}
3008 3008
3009void CalendarView::deleteTodo(Todo *todo) 3009void CalendarView::deleteTodo(Todo *todo)
3010{ 3010{
3011 if (!todo) { 3011 if (!todo) {
3012 KNotifyClient::beep(); 3012 KNotifyClient::beep();
3013 return; 3013 return;
3014 } 3014 }
3015 if (KOPrefs::instance()->mConfirm) { 3015 if (KOPrefs::instance()->mConfirm) {
3016 QString text = todo->summary().left(20); 3016 QString text = todo->summary().left(20);
3017 if (!todo->relations().isEmpty()) { 3017 if (!todo->relations().isEmpty()) {
3018 text += i18n("\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!"); 3018 text += i18n("\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!");
3019 3019
3020 } 3020 }
3021 switch (msgItemDelete(text)) { 3021 switch (msgItemDelete(text)) {
3022 case KMessageBox::Continue: // OK 3022 case KMessageBox::Continue: // OK
3023 bool deleteT = false; 3023 bool deleteT = false;
3024 if (!todo->relations().isEmpty()) { 3024 if (!todo->relations().isEmpty()) {
3025 deleteT = removeCompletedSubTodos( todo ); 3025 deleteT = removeCompletedSubTodos( todo );
3026 } 3026 }
3027 // deleteT == true: todo already deleted in removeCompletedSubTodos 3027 // deleteT == true: todo already deleted in removeCompletedSubTodos
3028 if ( !deleteT ) { 3028 if ( !deleteT ) {
3029 checkExternalId( todo ); 3029 checkExternalId( todo );
3030 calendar()->deleteTodo(todo); 3030 calendar()->deleteTodo(todo);
3031 changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); 3031 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
3032 updateView(); 3032 updateView();
3033 } 3033 }
3034 break; 3034 break;
3035 } // switch 3035 } // switch
3036 } else { 3036 } else {
3037 checkExternalId( todo ); 3037 checkExternalId( todo );
3038 mCalendar->deleteTodo(todo); 3038 mCalendar->deleteTodo(todo);
3039 changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); 3039 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
3040 updateView(); 3040 updateView();
3041 } 3041 }
3042 3042
3043 emit updateSearchDialog(); 3043 emit updateSearchDialog();
3044} 3044}
3045void CalendarView::deleteJournal(Journal *jour) 3045void CalendarView::deleteJournal(Journal *jour)
3046{ 3046{
3047 if (!jour) { 3047 if (!jour) {
3048 KNotifyClient::beep(); 3048 KNotifyClient::beep();
3049 return; 3049 return;
3050 } 3050 }
3051 if (KOPrefs::instance()->mConfirm) { 3051 if (KOPrefs::instance()->mConfirm) {
3052 switch (msgItemDelete( jour->description().left(20))) { 3052 switch (msgItemDelete( jour->description().left(20))) {
3053 case KMessageBox::Continue: // OK 3053 case KMessageBox::Continue: // OK
3054 calendar()->deleteJournal(jour); 3054 calendar()->deleteJournal(jour);
3055 updateView(); 3055 updateView();
3056 break; 3056 break;
3057 } // switch 3057 } // switch
3058 } else { 3058 } else {
3059 calendar()->deleteJournal(jour);; 3059 calendar()->deleteJournal(jour);;
3060 updateView(); 3060 updateView();
3061 } 3061 }
3062 emit updateSearchDialog(); 3062 emit updateSearchDialog();
3063} 3063}
3064 3064
3065void CalendarView::deleteEvent(Event *anEvent) 3065void CalendarView::deleteEvent(Event *anEvent)
3066{ 3066{
3067 if (!anEvent) { 3067 if (!anEvent) {
3068 KNotifyClient::beep(); 3068 KNotifyClient::beep();
3069 return; 3069 return;
3070 } 3070 }
3071 3071
3072 if (anEvent->recurrence()->doesRecur()) { 3072 if (anEvent->recurrence()->doesRecur()) {
3073 QDate itemDate = mViewManager->currentSelectionDate(); 3073 QDate itemDate = mViewManager->currentSelectionDate();
3074 int km; 3074 int km;
3075 if (!itemDate.isValid()) { 3075 if (!itemDate.isValid()) {
3076 //kdDebug() << "Date Not Valid" << endl; 3076 //kdDebug() << "Date Not Valid" << endl;
3077 if (KOPrefs::instance()->mConfirm) { 3077 if (KOPrefs::instance()->mConfirm) {
3078 km = KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) + 3078 km = KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) +
3079 i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"), 3079 i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"),
3080 i18n("KO/Pi Confirmation"),i18n("Delete All")); 3080 i18n("KO/Pi Confirmation"),i18n("Delete All"));
3081 if ( km == KMessageBox::Continue ) 3081 if ( km == KMessageBox::Continue )
3082 km = KMessageBox::No; // No = all below 3082 km = KMessageBox::No; // No = all below
3083 } else 3083 } else
3084 km = KMessageBox::No; 3084 km = KMessageBox::No;
3085 } else { 3085 } else {
3086 km = KMessageBox::warningYesNoCancel(this,anEvent->summary().left(25) + 3086 km = KMessageBox::warningYesNoCancel(this,anEvent->summary().left(25) +
3087 i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+ 3087 i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+
3088 KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"), 3088 KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"),
3089 i18n("KO/Pi Confirmation"),i18n("Current"), 3089 i18n("KO/Pi Confirmation"),i18n("Current"),
3090 i18n("All")); 3090 i18n("All"));
3091 } 3091 }
3092 switch(km) { 3092 switch(km) {
3093 3093
3094 case KMessageBox::No: // Continue // all 3094 case KMessageBox::No: // Continue // all
3095 //qDebug("KMessageBox::No "); 3095 //qDebug("KMessageBox::No ");
3096 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 3096 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
3097 schedule(Scheduler::Cancel,anEvent); 3097 schedule(Scheduler::Cancel,anEvent);
3098 3098
3099 checkExternalId( anEvent); 3099 checkExternalId( anEvent);
3100 mCalendar->deleteEvent(anEvent); 3100 mCalendar->deleteEvent(anEvent);
3101 changeEventDisplay(anEvent,KOGlobals::EVENTDELETED); 3101 changeEventDisplay(anEvent,KOGlobals::EVENTDELETED);
3102 break; 3102 break;
3103 3103
3104 // Disabled because it does not work 3104 // Disabled because it does not work
3105 //#if 0 3105 //#if 0
3106 case KMessageBox::Yes: // just this one 3106 case KMessageBox::Yes: // just this one
3107 //QDate qd = mNavigator->selectedDates().first(); 3107 //QDate qd = mNavigator->selectedDates().first();
3108 //if (!qd.isValid()) { 3108 //if (!qd.isValid()) {
3109 // kdDebug() << "no date selected, or invalid date" << endl; 3109 // kdDebug() << "no date selected, or invalid date" << endl;
3110 // KNotifyClient::beep(); 3110 // KNotifyClient::beep();
3111 // return; 3111 // return;
3112 //} 3112 //}
3113 //while (!anEvent->recursOn(qd)) qd = qd.addDays(1); 3113 //while (!anEvent->recursOn(qd)) qd = qd.addDays(1);
3114 if (itemDate!=QDate(1,1,1) || itemDate.isValid()) { 3114 if (itemDate!=QDate(1,1,1) || itemDate.isValid()) {
3115 anEvent->addExDate(itemDate); 3115 anEvent->addExDate(itemDate);
3116 int duration = anEvent->recurrence()->duration(); 3116 int duration = anEvent->recurrence()->duration();
3117 if ( duration > 0 ) { 3117 if ( duration > 0 ) {
3118 anEvent->recurrence()->setDuration( duration - 1 ); 3118 anEvent->recurrence()->setDuration( duration - 1 );
3119 } 3119 }
3120 changeEventDisplay(anEvent, KOGlobals::EVENTEDITED); 3120 changeEventDisplay(anEvent, KOGlobals::EVENTEDITED);
3121 } 3121 }
3122 break; 3122 break;
3123 //#endif 3123 //#endif
3124 } // switch 3124 } // switch
3125 } else { 3125 } else {
3126 if (KOPrefs::instance()->mConfirm) { 3126 if (KOPrefs::instance()->mConfirm) {
3127 switch (KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) + 3127 switch (KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) +
3128 i18n("\nAre you sure you want\nto delete this event?"), 3128 i18n("\nAre you sure you want\nto delete this event?"),
3129 i18n("KO/Pi Confirmation"),i18n("Delete"))) { 3129 i18n("KO/Pi Confirmation"),i18n("Delete"))) {
3130 case KMessageBox::Continue: // OK 3130 case KMessageBox::Continue: // OK
3131 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 3131 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
3132 schedule(Scheduler::Cancel,anEvent); 3132 schedule(Scheduler::Cancel,anEvent);
3133 checkExternalId( anEvent); 3133 checkExternalId( anEvent);
3134 mCalendar->deleteEvent(anEvent); 3134 mCalendar->deleteEvent(anEvent);
3135 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 3135 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
3136 break; 3136 break;
3137 } // switch 3137 } // switch
3138 } else { 3138 } else {
3139 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 3139 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
3140 schedule(Scheduler::Cancel,anEvent); 3140 schedule(Scheduler::Cancel,anEvent);
3141 checkExternalId( anEvent); 3141 checkExternalId( anEvent);
3142 mCalendar->deleteEvent(anEvent); 3142 mCalendar->deleteEvent(anEvent);
3143 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 3143 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
3144 } 3144 }
3145 } // if-else 3145 } // if-else
3146 emit updateSearchDialog(); 3146 emit updateSearchDialog();
3147} 3147}
3148 3148
3149bool CalendarView::deleteEvent(const QString &uid) 3149bool CalendarView::deleteEvent(const QString &uid)
3150{ 3150{
3151 Event *ev = mCalendar->event(uid); 3151 Event *ev = mCalendar->event(uid);
3152 if (ev) { 3152 if (ev) {
3153 deleteEvent(ev); 3153 deleteEvent(ev);
3154 return true; 3154 return true;
3155 } else { 3155 } else {
3156 return false; 3156 return false;
3157 } 3157 }
3158} 3158}
3159 3159
3160/*****************************************************************************/ 3160/*****************************************************************************/
3161 3161
3162void CalendarView::action_mail() 3162void CalendarView::action_mail()
3163{ 3163{
3164#ifndef KORG_NOMAIL 3164#ifndef KORG_NOMAIL
3165 KOMailClient mailClient; 3165 KOMailClient mailClient;
3166 3166
3167 Incidence *incidence = currentSelection(); 3167 Incidence *incidence = currentSelection();
3168 3168
3169 if (!incidence) { 3169 if (!incidence) {
3170 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected.")); 3170 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected."));
3171 return; 3171 return;
3172 } 3172 }
3173 if(incidence->attendeeCount() == 0 ) { 3173 if(incidence->attendeeCount() == 0 ) {
3174 KMessageBox::sorry(this, 3174 KMessageBox::sorry(this,
3175 i18n("Can't generate mail:\nNo attendees defined.\n")); 3175 i18n("Can't generate mail:\nNo attendees defined.\n"));
3176 return; 3176 return;
3177 } 3177 }
3178 3178
3179 CalendarLocal cal_tmp; 3179 CalendarLocal cal_tmp;
3180 Event *event = 0; 3180 Event *event = 0;
3181 Event *ev = 0; 3181 Event *ev = 0;
3182 if ( incidence && incidence->type() == "Event" ) { 3182 if ( incidence && incidence->type() == "Event" ) {
3183 event = static_cast<Event *>(incidence); 3183 event = static_cast<Event *>(incidence);
3184 ev = new Event(*event); 3184 ev = new Event(*event);
3185 cal_tmp.addEvent(ev); 3185 cal_tmp.addEvent(ev);
3186 } 3186 }
3187 ICalFormat mForm(); 3187 ICalFormat mForm();
3188 QString attachment = mForm.toString( &cal_tmp ); 3188 QString attachment = mForm.toString( &cal_tmp );
3189 if (ev) delete(ev); 3189 if (ev) delete(ev);
3190 3190
3191 mailClient.mailAttendees(currentSelection(), attachment); 3191 mailClient.mailAttendees(currentSelection(), attachment);
3192 3192
3193#endif 3193#endif
3194 3194
3195#if 0 3195#if 0
3196 Event *anEvent = 0; 3196 Event *anEvent = 0;
3197 if (mViewManager->currentView()->isEventView()) { 3197 if (mViewManager->currentView()->isEventView()) {
3198 anEvent = dynamic_cast<Event *>((mViewManager->currentView()->selectedIncidences()).first()); 3198 anEvent = dynamic_cast<Event *>((mViewManager->currentView()->selectedIncidences()).first());
3199 } 3199 }
3200 3200
3201 if (!anEvent) { 3201 if (!anEvent) {
3202 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected.")); 3202 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected."));
3203 return; 3203 return;
3204 } 3204 }
3205 if(anEvent->attendeeCount() == 0 ) { 3205 if(anEvent->attendeeCount() == 0 ) {
3206 KMessageBox::sorry(this, 3206 KMessageBox::sorry(this,
3207 i18n("Can't generate mail:\nNo attendees defined.\n")); 3207 i18n("Can't generate mail:\nNo attendees defined.\n"));
3208 return; 3208 return;
3209 } 3209 }
3210 3210
3211 mailobject.emailEvent(anEvent); 3211 mailobject.emailEvent(anEvent);
3212#endif 3212#endif
3213} 3213}
3214 3214
3215 3215
3216void CalendarView::schedule_publish(Incidence *incidence) 3216void CalendarView::schedule_publish(Incidence *incidence)
3217{ 3217{
3218 Event *event = 0; 3218 Event *event = 0;
3219 Todo *todo = 0; 3219 Todo *todo = 0;
3220 3220
3221 if (incidence == 0) { 3221 if (incidence == 0) {
3222 incidence = mViewManager->currentView()->selectedIncidences().first(); 3222 incidence = mViewManager->currentView()->selectedIncidences().first();
3223 if (incidence == 0) { 3223 if (incidence == 0) {
3224 incidence = mTodoList->selectedIncidences().first(); 3224 incidence = mTodoList->selectedIncidences().first();
3225 } 3225 }
3226 } 3226 }
3227 if ( incidence && incidence->type() == "Event" ) { 3227 if ( incidence && incidence->type() == "Event" ) {
3228 event = static_cast<Event *>(incidence); 3228 event = static_cast<Event *>(incidence);
3229 } else { 3229 } else {
3230 if ( incidence && incidence->type() == "Todo" ) { 3230 if ( incidence && incidence->type() == "Todo" ) {
3231 todo = static_cast<Todo *>(incidence); 3231 todo = static_cast<Todo *>(incidence);
3232 } 3232 }
3233 } 3233 }
3234 3234
3235 if (!event && !todo) { 3235 if (!event && !todo) {
3236 KMessageBox::sorry(this,i18n("No event selected.")); 3236 KMessageBox::sorry(this,i18n("No event selected."));
3237 return; 3237 return;
3238 } 3238 }
3239 3239
3240 PublishDialog *publishdlg = new PublishDialog(); 3240 PublishDialog *publishdlg = new PublishDialog();
3241 if (incidence->attendeeCount()>0) { 3241 if (incidence->attendeeCount()>0) {
3242 QPtrList<Attendee> attendees = incidence->attendees(); 3242 QPtrList<Attendee> attendees = incidence->attendees();
3243 attendees.first(); 3243 attendees.first();
3244 while ( attendees.current()!=0 ) { 3244 while ( attendees.current()!=0 ) {
3245 publishdlg->addAttendee(attendees.current()); 3245 publishdlg->addAttendee(attendees.current());
3246 attendees.next(); 3246 attendees.next();
3247 } 3247 }
3248 } 3248 }
3249 bool send = true; 3249 bool send = true;
3250 if ( KOPrefs::instance()->mMailClient == KOPrefs::MailClientSendmail ) { 3250 if ( KOPrefs::instance()->mMailClient == KOPrefs::MailClientSendmail ) {
3251 if ( publishdlg->exec() != QDialog::Accepted ) 3251 if ( publishdlg->exec() != QDialog::Accepted )
3252 send = false; 3252 send = false;
3253 } 3253 }
3254 if ( send ) { 3254 if ( send ) {
3255 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 3255 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
3256 if ( event ) { 3256 if ( event ) {
3257 Event *ev = new Event(*event); 3257 Event *ev = new Event(*event);
3258 ev->registerObserver(0); 3258 ev->registerObserver(0);
3259 ev->clearAttendees(); 3259 ev->clearAttendees();
3260 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) { 3260 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) {
3261 delete(ev); 3261 delete(ev);
3262 } 3262 }
3263 } else { 3263 } else {
3264 if ( todo ) { 3264 if ( todo ) {
3265 Todo *ev = new Todo(*todo); 3265 Todo *ev = new Todo(*todo);
3266 ev->registerObserver(0); 3266 ev->registerObserver(0);
3267 ev->clearAttendees(); 3267 ev->clearAttendees();
3268 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) { 3268 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) {
3269 delete(ev); 3269 delete(ev);
3270 } 3270 }
3271 } 3271 }
3272 } 3272 }
3273 } 3273 }
3274 delete publishdlg; 3274 delete publishdlg;
3275} 3275}
3276 3276
3277void CalendarView::schedule_request(Incidence *incidence) 3277void CalendarView::schedule_request(Incidence *incidence)
3278{ 3278{
3279 schedule(Scheduler::Request,incidence); 3279 schedule(Scheduler::Request,incidence);
3280} 3280}
3281 3281
3282void CalendarView::schedule_refresh(Incidence *incidence) 3282void CalendarView::schedule_refresh(Incidence *incidence)
3283{ 3283{
3284 schedule(Scheduler::Refresh,incidence); 3284 schedule(Scheduler::Refresh,incidence);
3285} 3285}
3286 3286
3287void CalendarView::schedule_cancel(Incidence *incidence) 3287void CalendarView::schedule_cancel(Incidence *incidence)
3288{ 3288{
3289 schedule(Scheduler::Cancel,incidence); 3289 schedule(Scheduler::Cancel,incidence);
3290} 3290}
3291 3291
3292void CalendarView::schedule_add(Incidence *incidence) 3292void CalendarView::schedule_add(Incidence *incidence)
3293{ 3293{
3294 schedule(Scheduler::Add,incidence); 3294 schedule(Scheduler::Add,incidence);
3295} 3295}
3296 3296
3297void CalendarView::schedule_reply(Incidence *incidence) 3297void CalendarView::schedule_reply(Incidence *incidence)
3298{ 3298{
3299 schedule(Scheduler::Reply,incidence); 3299 schedule(Scheduler::Reply,incidence);
3300} 3300}
3301 3301
3302void CalendarView::schedule_counter(Incidence *incidence) 3302void CalendarView::schedule_counter(Incidence *incidence)
3303{ 3303{
3304 schedule(Scheduler::Counter,incidence); 3304 schedule(Scheduler::Counter,incidence);
3305} 3305}
3306 3306
3307void CalendarView::schedule_declinecounter(Incidence *incidence) 3307void CalendarView::schedule_declinecounter(Incidence *incidence)
3308{ 3308{
3309 schedule(Scheduler::Declinecounter,incidence); 3309 schedule(Scheduler::Declinecounter,incidence);
3310} 3310}
3311 3311
3312void CalendarView::schedule_publish_freebusy(int daysToPublish) 3312void CalendarView::schedule_publish_freebusy(int daysToPublish)
3313{ 3313{
3314 QDateTime start = QDateTime::currentDateTime(); 3314 QDateTime start = QDateTime::currentDateTime();
3315 QDateTime end = start.addDays(daysToPublish); 3315 QDateTime end = start.addDays(daysToPublish);
3316 3316
3317 FreeBusy *freebusy = new FreeBusy(mCalendar, start, end); 3317 FreeBusy *freebusy = new FreeBusy(mCalendar, start, end);
3318 freebusy->setOrganizer(KOPrefs::instance()->email()); 3318 freebusy->setOrganizer(KOPrefs::instance()->email());
3319 3319
3320 3320
3321 PublishDialog *publishdlg = new PublishDialog(); 3321 PublishDialog *publishdlg = new PublishDialog();
3322 if ( publishdlg->exec() == QDialog::Accepted ) { 3322 if ( publishdlg->exec() == QDialog::Accepted ) {
3323 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 3323 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
3324 if (!dlg->addMessage(freebusy,Scheduler::Publish,publishdlg->addresses())) { 3324 if (!dlg->addMessage(freebusy,Scheduler::Publish,publishdlg->addresses())) {
3325 delete(freebusy); 3325 delete(freebusy);
3326 } 3326 }
3327 } 3327 }
3328 delete publishdlg; 3328 delete publishdlg;
3329} 3329}
3330 3330
3331void CalendarView::schedule(Scheduler::Method method, Incidence *incidence) 3331void CalendarView::schedule(Scheduler::Method method, Incidence *incidence)
3332{ 3332{
3333 Event *event = 0; 3333 Event *event = 0;
3334 Todo *todo = 0; 3334 Todo *todo = 0;
3335 3335
3336 if (incidence == 0) { 3336 if (incidence == 0) {
3337 incidence = mViewManager->currentView()->selectedIncidences().first(); 3337 incidence = mViewManager->currentView()->selectedIncidences().first();
3338 if (incidence == 0) { 3338 if (incidence == 0) {
3339 incidence = mTodoList->selectedIncidences().first(); 3339 incidence = mTodoList->selectedIncidences().first();
3340 } 3340 }
3341 } 3341 }
3342 if ( incidence && incidence->type() == "Event" ) { 3342 if ( incidence && incidence->type() == "Event" ) {
3343 event = static_cast<Event *>(incidence); 3343 event = static_cast<Event *>(incidence);
3344 } 3344 }
3345 if ( incidence && incidence->type() == "Todo" ) { 3345 if ( incidence && incidence->type() == "Todo" ) {
3346 todo = static_cast<Todo *>(incidence); 3346 todo = static_cast<Todo *>(incidence);
3347 } 3347 }
3348 3348
3349 if (!event && !todo) { 3349 if (!event && !todo) {
3350 KMessageBox::sorry(this,i18n("No event selected.")); 3350 KMessageBox::sorry(this,i18n("No event selected."));
3351 return; 3351 return;
3352 } 3352 }
3353 3353
3354 if( incidence->attendeeCount() == 0 && method != Scheduler::Publish ) { 3354 if( incidence->attendeeCount() == 0 && method != Scheduler::Publish ) {
3355 KMessageBox::sorry(this,i18n("The event has no attendees.")); 3355 KMessageBox::sorry(this,i18n("The event has no attendees."));
3356 return; 3356 return;
3357 } 3357 }
3358 3358
3359 Event *ev = 0; 3359 Event *ev = 0;
3360 if (event) ev = new Event(*event); 3360 if (event) ev = new Event(*event);
3361 Todo *to = 0; 3361 Todo *to = 0;
3362 if (todo) to = new Todo(*todo); 3362 if (todo) to = new Todo(*todo);
3363 3363
3364 if (method == Scheduler::Reply || method == Scheduler::Refresh) { 3364 if (method == Scheduler::Reply || method == Scheduler::Refresh) {
3365 Attendee *me = incidence->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email()); 3365 Attendee *me = incidence->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email());
3366 if (!me) { 3366 if (!me) {
3367 KMessageBox::sorry(this,i18n("Could not find your attendee entry.\nPlease check the emails.")); 3367 KMessageBox::sorry(this,i18n("Could not find your attendee entry.\nPlease check the emails."));
3368 return; 3368 return;
3369 } 3369 }
3370 if (me->status()==Attendee::NeedsAction && me->RSVP() && method==Scheduler::Reply) { 3370 if (me->status()==Attendee::NeedsAction && me->RSVP() && method==Scheduler::Reply) {
3371 StatusDialog *statdlg = new StatusDialog(this); 3371 StatusDialog *statdlg = new StatusDialog(this);
3372 if (!statdlg->exec()==QDialog::Accepted) return; 3372 if (!statdlg->exec()==QDialog::Accepted) return;
3373 me->setStatus( statdlg->status() ); 3373 me->setStatus( statdlg->status() );
3374 delete(statdlg); 3374 delete(statdlg);
3375 } 3375 }
3376 Attendee *menew = new Attendee(*me); 3376 Attendee *menew = new Attendee(*me);
3377 if (ev) { 3377 if (ev) {
3378 ev->clearAttendees(); 3378 ev->clearAttendees();
3379 ev->addAttendee(menew,false); 3379 ev->addAttendee(menew,false);
3380 } else { 3380 } else {
3381 if (to) { 3381 if (to) {
3382 todo->clearAttendees(); 3382 todo->clearAttendees();
3383 todo->addAttendee(menew,false); 3383 todo->addAttendee(menew,false);
3384 } 3384 }
3385 } 3385 }
3386 } 3386 }
3387 3387
3388 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 3388 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
3389 if (ev) { 3389 if (ev) {
3390 if ( !dlg->addMessage(ev,method) ) delete(ev); 3390 if ( !dlg->addMessage(ev,method) ) delete(ev);
3391 } else { 3391 } else {
3392 if (to) { 3392 if (to) {
3393 if ( !dlg->addMessage(to,method) ) delete(to); 3393 if ( !dlg->addMessage(to,method) ) delete(to);
3394 } 3394 }
3395 } 3395 }
3396} 3396}
3397 3397
3398void CalendarView::openAddressbook() 3398void CalendarView::openAddressbook()
3399{ 3399{
3400 KRun::runCommand("kaddressbook"); 3400 KRun::runCommand("kaddressbook");
3401} 3401}
3402 3402
3403void CalendarView::setModified(bool modified) 3403void CalendarView::setModified(bool modified)
3404{ 3404{
3405 if ( modified ) 3405 if ( modified )
3406 emit signalmodified(); 3406 emit signalmodified();
3407 if (mModified != modified) { 3407 if (mModified != modified) {
3408 mModified = modified; 3408 mModified = modified;
3409 emit modifiedChanged(mModified); 3409 emit modifiedChanged(mModified);
3410 } 3410 }
3411} 3411}
3412 3412
3413bool CalendarView::isReadOnly() 3413bool CalendarView::isReadOnly()
3414{ 3414{
3415 return mReadOnly; 3415 return mReadOnly;
3416} 3416}
3417 3417
3418void CalendarView::setReadOnly(bool readOnly) 3418void CalendarView::setReadOnly(bool readOnly)
3419{ 3419{
3420 if (mReadOnly != readOnly) { 3420 if (mReadOnly != readOnly) {
3421 mReadOnly = readOnly; 3421 mReadOnly = readOnly;
3422 emit readOnlyChanged(mReadOnly); 3422 emit readOnlyChanged(mReadOnly);
3423 } 3423 }
3424} 3424}
3425 3425
3426bool CalendarView::isModified() 3426bool CalendarView::isModified()
3427{ 3427{
3428 return mModified; 3428 return mModified;
3429} 3429}
3430 3430void CalendarView::slotprintSelInc()
3431{
3432 if ( currentSelection() == 0 ) {
3433 KMessageBox::sorry(this,i18n("There is nothing selected!"));
3434 return;
3435 }
3436 showIncidence();
3437 getEventViewerDialog()->print();
3438
3439}
3431void CalendarView::printSetup() 3440void CalendarView::printSetup()
3432{ 3441{
3433#ifndef KORG_NOPRINTER 3442#ifndef KORG_NOPRINTER
3434 createPrinter(); 3443 createPrinter();
3435 3444
3436 mCalPrinter->setupPrinter(); 3445 mCalPrinter->setupPrinter();
3437#endif 3446#endif
3438} 3447}
3439 3448
3440void CalendarView::print() 3449void CalendarView::print()
3441{ 3450{
3442#ifndef KORG_NOPRINTER 3451#ifndef KORG_NOPRINTER
3443 createPrinter(); 3452 createPrinter();
3444 3453
3445 DateList tmpDateList = mNavigator->selectedDates(); 3454 DateList tmpDateList = mNavigator->selectedDates();
3446 mCalPrinter->print(CalPrinter::Month, 3455 mCalPrinter->print(CalPrinter::Month,
3447 tmpDateList.first(), tmpDateList.last()); 3456 tmpDateList.first(), tmpDateList.last());
3448#endif 3457#endif
3449} 3458}
3450 3459
3451void CalendarView::printPreview() 3460void CalendarView::printPreview()
3452{ 3461{
3453#ifndef KORG_NOPRINTER 3462#ifndef KORG_NOPRINTER
3454 kdDebug() << "CalendarView::printPreview()" << endl; 3463 kdDebug() << "CalendarView::printPreview()" << endl;
3455 3464
3456 createPrinter(); 3465 createPrinter();
3457 3466
3458 DateList tmpDateList = mNavigator->selectedDates(); 3467 DateList tmpDateList = mNavigator->selectedDates();
3459 3468
3460 mViewManager->currentView()->printPreview(mCalPrinter,tmpDateList.first(), 3469 mViewManager->currentView()->printPreview(mCalPrinter,tmpDateList.first(),
3461 tmpDateList.last()); 3470 tmpDateList.last());
3462#endif 3471#endif
3463} 3472}
3464 3473
3465void CalendarView::exportICalendar() 3474void CalendarView::exportICalendar()
3466{ 3475{
3467 QString filename = KFileDialog::getSaveFileName("icalout.ics",i18n("*.ics|ICalendars"),this); 3476 QString filename = KFileDialog::getSaveFileName("icalout.ics",i18n("*.ics|ICalendars"),this);
3468 3477
3469 // Force correct extension 3478 // Force correct extension
3470 if (filename.right(4) != ".ics") filename += ".ics"; 3479 if (filename.right(4) != ".ics") filename += ".ics";
3471 3480
3472 FileStorage storage( mCalendar, filename, new ICalFormat() ); 3481 FileStorage storage( mCalendar, filename, new ICalFormat() );
3473 storage.save(); 3482 storage.save();
3474} 3483}
3475 3484
3476bool CalendarView::exportVCalendar( QString filename ) 3485bool CalendarView::exportVCalendar( QString filename )
3477{ 3486{
3478 if (mCalendar->journals().count() > 0) { 3487 if (mCalendar->journals().count() > 0) {
3479 int result = KMessageBox::warningContinueCancel(this, 3488 int result = KMessageBox::warningContinueCancel(this,
3480 i18n("The journal entries can not be\nexported to a vCalendar file."), 3489 i18n("The journal entries can not be\nexported to a vCalendar file."),
3481 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"), 3490 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"),
3482 true); 3491 true);
3483 if (result != KMessageBox::Continue) return false; 3492 if (result != KMessageBox::Continue) return false;
3484 } 3493 }
3485 3494
3486 //QString filename = KFileDialog::getSaveFileName("vcalout.vcs",i18n("*.vcs|VCalendars"),this); 3495 //QString filename = KFileDialog::getSaveFileName("vcalout.vcs",i18n("*.vcs|VCalendars"),this);
3487 3496
3488 // Force correct extension 3497 // Force correct extension
3489 if (filename.right(4) != ".vcs") filename += ".vcs"; 3498 if (filename.right(4) != ".vcs") filename += ".vcs";
3490 3499
3491 FileStorage storage( mCalendar, filename, new VCalFormat ); 3500 FileStorage storage( mCalendar, filename, new VCalFormat );
3492 return storage.save(); 3501 return storage.save();
3493 3502
3494} 3503}
3495 3504
3496void CalendarView::eventUpdated(Incidence *) 3505void CalendarView::eventUpdated(Incidence *)
3497{ 3506{
3498 setModified(); 3507 setModified();
3499 // Don't call updateView here. The code, which has caused the update of the 3508 // Don't call updateView here. The code, which has caused the update of the
3500 // event is responsible for updating the view. 3509 // event is responsible for updating the view.
3501 // updateView(); 3510 // updateView();
3502} 3511}
3503 3512
3504void CalendarView::adaptNavigationUnits() 3513void CalendarView::adaptNavigationUnits()
3505{ 3514{
3506 if (mViewManager->currentView()->isEventView()) { 3515 if (mViewManager->currentView()->isEventView()) {
3507 int days = mViewManager->currentView()->currentDateCount(); 3516 int days = mViewManager->currentView()->currentDateCount();
3508 if (days == 1) { 3517 if (days == 1) {
3509 emit changeNavStringPrev(i18n("&Previous Day")); 3518 emit changeNavStringPrev(i18n("&Previous Day"));
3510 emit changeNavStringNext(i18n("&Next Day")); 3519 emit changeNavStringNext(i18n("&Next Day"));
3511 } else { 3520 } else {
3512 emit changeNavStringPrev(i18n("&Previous Week")); 3521 emit changeNavStringPrev(i18n("&Previous Week"));
3513 emit changeNavStringNext(i18n("&Next Week")); 3522 emit changeNavStringNext(i18n("&Next Week"));
3514 } 3523 }
3515 } 3524 }
3516} 3525}
3517 3526
3518void CalendarView::processMainViewSelection( Incidence *incidence ) 3527void CalendarView::processMainViewSelection( Incidence *incidence )
3519{ 3528{
3520 if ( incidence ) mTodoList->clearSelection(); 3529 if ( incidence ) mTodoList->clearSelection();
3521 processIncidenceSelection( incidence ); 3530 processIncidenceSelection( incidence );
3522} 3531}
3523 3532
3524void CalendarView::processTodoListSelection( Incidence *incidence ) 3533void CalendarView::processTodoListSelection( Incidence *incidence )
3525{ 3534{
3526 if ( incidence && mViewManager->currentView() ) { 3535 if ( incidence && mViewManager->currentView() ) {
3527 mViewManager->currentView()->clearSelection(); 3536 mViewManager->currentView()->clearSelection();
3528 } 3537 }
3529 processIncidenceSelection( incidence ); 3538 processIncidenceSelection( incidence );
3530} 3539}
3531 3540
3532void CalendarView::processIncidenceSelection( Incidence *incidence ) 3541void CalendarView::processIncidenceSelection( Incidence *incidence )
3533{ 3542{
3534 if ( incidence == mSelectedIncidence ) return; 3543 if ( incidence == mSelectedIncidence ) return;
3535 3544
3536 mSelectedIncidence = incidence; 3545 mSelectedIncidence = incidence;
3537 3546
3538 emit incidenceSelected( mSelectedIncidence ); 3547 emit incidenceSelected( mSelectedIncidence );
3539 3548
3540 if ( incidence && incidence->type() == "Event" ) { 3549 if ( incidence && incidence->type() == "Event" ) {
3541 Event *event = static_cast<Event *>( incidence ); 3550 Event *event = static_cast<Event *>( incidence );
3542 if ( event->organizer() == KOPrefs::instance()->email() ) { 3551 if ( event->organizer() == KOPrefs::instance()->email() ) {
3543 emit organizerEventsSelected( true ); 3552 emit organizerEventsSelected( true );
3544 } else { 3553 } else {
3545 emit organizerEventsSelected(false); 3554 emit organizerEventsSelected(false);
3546 } 3555 }
3547 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails, 3556 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails,
3548 KOPrefs::instance()->email() ) ) { 3557 KOPrefs::instance()->email() ) ) {
3549 emit groupEventsSelected( true ); 3558 emit groupEventsSelected( true );
3550 } else { 3559 } else {
3551 emit groupEventsSelected(false); 3560 emit groupEventsSelected(false);
3552 } 3561 }
3553 return; 3562 return;
3554 } else { 3563 } else {
3555 if ( incidence && incidence->type() == "Todo" ) { 3564 if ( incidence && incidence->type() == "Todo" ) {
3556 emit todoSelected( true ); 3565 emit todoSelected( true );
3557 Todo *event = static_cast<Todo *>( incidence ); 3566 Todo *event = static_cast<Todo *>( incidence );
3558 if ( event->organizer() == KOPrefs::instance()->email() ) { 3567 if ( event->organizer() == KOPrefs::instance()->email() ) {
3559 emit organizerEventsSelected( true ); 3568 emit organizerEventsSelected( true );
3560 } else { 3569 } else {
3561 emit organizerEventsSelected(false); 3570 emit organizerEventsSelected(false);
3562 } 3571 }
3563 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails, 3572 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails,
3564 KOPrefs::instance()->email() ) ) { 3573 KOPrefs::instance()->email() ) ) {
3565 emit groupEventsSelected( true ); 3574 emit groupEventsSelected( true );
3566 } else { 3575 } else {
3567 emit groupEventsSelected(false); 3576 emit groupEventsSelected(false);
3568 } 3577 }
3569 return; 3578 return;
3570 } else { 3579 } else {
3571 emit todoSelected( false ); 3580 emit todoSelected( false );
3572 emit organizerEventsSelected(false); 3581 emit organizerEventsSelected(false);
3573 emit groupEventsSelected(false); 3582 emit groupEventsSelected(false);
3574 } 3583 }
3575 return; 3584 return;
3576 } 3585 }
3577 3586
3578 /* if ( incidence && incidence->type() == "Todo" ) { 3587 /* if ( incidence && incidence->type() == "Todo" ) {
3579 emit todoSelected( true ); 3588 emit todoSelected( true );
3580 } else { 3589 } else {
3581 emit todoSelected( false ); 3590 emit todoSelected( false );
3582 }*/ 3591 }*/
3583} 3592}
3584 3593
3585 3594
3586void CalendarView::checkClipboard() 3595void CalendarView::checkClipboard()
3587{ 3596{
3588#ifndef KORG_NODND 3597#ifndef KORG_NODND
3589 if (ICalDrag::canDecode(QApplication::clipboard()->data())) { 3598 if (ICalDrag::canDecode(QApplication::clipboard()->data())) {
3590 emit pasteEnabled(true); 3599 emit pasteEnabled(true);
3591 } else { 3600 } else {
3592 emit pasteEnabled(false); 3601 emit pasteEnabled(false);
3593 } 3602 }
3594#endif 3603#endif
3595} 3604}
3596 3605
3597void CalendarView::showDates(const DateList &selectedDates) 3606void CalendarView::showDates(const DateList &selectedDates)
3598{ 3607{
3599 // kdDebug() << "CalendarView::selectDates()" << endl; 3608 // kdDebug() << "CalendarView::selectDates()" << endl;
3600 3609
3601 3610
3602 if ( !mBlockShowDates ) { 3611 if ( !mBlockShowDates ) {
3603 if ( mViewManager->currentView() ) { 3612 if ( mViewManager->currentView() ) {
3604 updateView( selectedDates.first(), selectedDates.last() ); 3613 updateView( selectedDates.first(), selectedDates.last() );
3605 } else { 3614 } else {
3606 mViewManager->showAgendaView(); 3615 mViewManager->showAgendaView();
3607 } 3616 }
3608 } 3617 }
3609 3618
3610 QDate date = selectedDates.first(); 3619 QDate date = selectedDates.first();
3611 if ( ! date.isValid() ) { 3620 if ( ! date.isValid() ) {
3612 topLevelWidget()->setCaption(""); 3621 topLevelWidget()->setCaption("");
3613 return; 3622 return;
3614 } 3623 }
3615 3624
3616 QString selDates; 3625 QString selDates;
3617 selDates = KGlobal::locale()->formatDate( date, true); 3626 selDates = KGlobal::locale()->formatDate( date, true);
3618 if (selectedDates.first() < selectedDates.last() ) 3627 if (selectedDates.first() < selectedDates.last() )
3619 selDates += " - " + KGlobal::locale()->formatDate( selectedDates.last(),true); 3628 selDates += " - " + KGlobal::locale()->formatDate( selectedDates.last(),true);
3620 else { 3629 else {
3621 QString addString; 3630 QString addString;
3622 if ( date == QDateTime::currentDateTime().date() ) 3631 if ( date == QDateTime::currentDateTime().date() )
3623 addString = i18n("Today"); 3632 addString = i18n("Today");
3624 else if ( date == QDateTime::currentDateTime().date().addDays(1) ) 3633 else if ( date == QDateTime::currentDateTime().date().addDays(1) )
3625 addString = i18n("Tomorrow"); 3634 addString = i18n("Tomorrow");
3626 else if ( date == QDateTime::currentDateTime().date().addDays(-1) ) 3635 else if ( date == QDateTime::currentDateTime().date().addDays(-1) )
3627 addString = i18n("Yesterday"); 3636 addString = i18n("Yesterday");
3628 else if ( date == QDateTime::currentDateTime().date().addDays(-2) ) 3637 else if ( date == QDateTime::currentDateTime().date().addDays(-2) )
3629 addString = i18n("Day before yesterday"); 3638 addString = i18n("Day before yesterday");
3630 else if ( date == QDateTime::currentDateTime().date().addDays(2) ) 3639 else if ( date == QDateTime::currentDateTime().date().addDays(2) )
3631 addString = i18n("Day after tomorrow"); 3640 addString = i18n("Day after tomorrow");
3632 if ( !addString.isEmpty() ) { 3641 if ( !addString.isEmpty() ) {
3633 topLevelWidget()->setCaption( addString+", " + selDates ); 3642 topLevelWidget()->setCaption( addString+", " + selDates );
3634 return; 3643 return;
3635 } 3644 }
3636 } 3645 }
3637 topLevelWidget()->setCaption( i18n("Dates: ") + selDates ); 3646 topLevelWidget()->setCaption( i18n("Dates: ") + selDates );
3638 3647
3639} 3648}
3640 3649
3641QPtrList<CalFilter> CalendarView::filters() 3650QPtrList<CalFilter> CalendarView::filters()
3642{ 3651{
3643 return mFilters; 3652 return mFilters;
3644 3653
3645} 3654}
3646void CalendarView::editFilters() 3655void CalendarView::editFilters()
3647{ 3656{
3648 // kdDebug() << "CalendarView::editFilters()" << endl; 3657 // kdDebug() << "CalendarView::editFilters()" << endl;
3649 3658
3650 CalFilter *filter = mFilters.first(); 3659 CalFilter *filter = mFilters.first();
3651 while(filter) { 3660 while(filter) {
3652 kdDebug() << " Filter: " << filter->name() << endl; 3661 kdDebug() << " Filter: " << filter->name() << endl;
3653 filter = mFilters.next(); 3662 filter = mFilters.next();
3654 } 3663 }
3655 3664
3656 mDialogManager->showFilterEditDialog(&mFilters); 3665 mDialogManager->showFilterEditDialog(&mFilters);
3657} 3666}
3658void CalendarView::toggleFilter() 3667void CalendarView::toggleFilter()
3659{ 3668{
3660 showFilter(! mFilterView->isVisible()); 3669 showFilter(! mFilterView->isVisible());
3661} 3670}
3662 3671
3663KOFilterView *CalendarView::filterView() 3672KOFilterView *CalendarView::filterView()
3664{ 3673{
3665 return mFilterView; 3674 return mFilterView;
3666} 3675}
3667void CalendarView::selectFilter( int fil ) 3676void CalendarView::selectFilter( int fil )
3668{ 3677{
3669 mFilterView->setSelectedFilter( fil ); 3678 mFilterView->setSelectedFilter( fil );
3670} 3679}
3671void CalendarView::showFilter(bool visible) 3680void CalendarView::showFilter(bool visible)
3672{ 3681{
3673 if (visible) mFilterView->show(); 3682 if (visible) mFilterView->show();
3674 else mFilterView->hide(); 3683 else mFilterView->hide();
3675} 3684}
3676void CalendarView::toggleFilerEnabled( ) 3685void CalendarView::toggleFilerEnabled( )
3677{ 3686{
3678 mFilterView->setFiltersEnabled ( !mFilterView->filtersEnabled() ); 3687 mFilterView->setFiltersEnabled ( !mFilterView->filtersEnabled() );
3679 if ( !mFilterView->filtersEnabled() ) 3688 if ( !mFilterView->filtersEnabled() )
3680 topLevelWidget()->setCaption( i18n("Filter disabled ") ); 3689 topLevelWidget()->setCaption( i18n("Filter disabled ") );
3681 3690
3682} 3691}
3683void CalendarView::updateFilter() 3692void CalendarView::updateFilter()
3684{ 3693{
3685 CalFilter *filter = mFilterView->selectedFilter(); 3694 CalFilter *filter = mFilterView->selectedFilter();
3686 if (filter) { 3695 if (filter) {
3687 QString mess; 3696 QString mess;
3688 if (mFilterView->filtersEnabled()) { 3697 if (mFilterView->filtersEnabled()) {
3689 mess = i18n("Filter selected: ")+filter->name(); 3698 mess = i18n("Filter selected: ")+filter->name();
3690 filter->setEnabled(true); 3699 filter->setEnabled(true);
3691 } 3700 }
3692 else filter->setEnabled(false); 3701 else filter->setEnabled(false);
3693 mCalendar->setFilter(filter); 3702 mCalendar->setFilter(filter);
3694 updateView(); 3703 updateView();
3695 if ( !mess.isEmpty() ) 3704 if ( !mess.isEmpty() )
3696 topLevelWidget()->setCaption( mess ); 3705 topLevelWidget()->setCaption( mess );
3697 3706
3698 } 3707 }
3699} 3708}
3700 3709
3701void CalendarView::filterEdited() 3710void CalendarView::filterEdited()
3702{ 3711{
3703 mFilterView->updateFilters(); 3712 mFilterView->updateFilters();
3704 updateFilter(); 3713 updateFilter();
3705 writeSettings(); 3714 writeSettings();
3706} 3715}
3707 3716
3708 3717
3709void CalendarView::takeOverEvent() 3718void CalendarView::takeOverEvent()
3710{ 3719{
3711 Incidence *incidence = currentSelection(); 3720 Incidence *incidence = currentSelection();
3712 3721
3713 if (!incidence) return; 3722 if (!incidence) return;
3714 3723
3715 incidence->setOrganizer(KOPrefs::instance()->email()); 3724 incidence->setOrganizer(KOPrefs::instance()->email());
3716 incidence->recreate(); 3725 incidence->recreate();
3717 incidence->setReadOnly(false); 3726 incidence->setReadOnly(false);
3718 3727
3719 updateView(); 3728 updateView();
3720} 3729}
3721 3730
3722void CalendarView::takeOverCalendar() 3731void CalendarView::takeOverCalendar()
3723{ 3732{
3724 // TODO: Create Calendar::allIncidences() function and use it here 3733 // TODO: Create Calendar::allIncidences() function and use it here
3725 3734
3726 QPtrList<Event> events = mCalendar->events(); 3735 QPtrList<Event> events = mCalendar->events();
3727 for(uint i=0; i<events.count(); ++i) { 3736 for(uint i=0; i<events.count(); ++i) {
3728 events.at(i)->setOrganizer(KOPrefs::instance()->email()); 3737 events.at(i)->setOrganizer(KOPrefs::instance()->email());
3729 events.at(i)->recreate(); 3738 events.at(i)->recreate();
3730 events.at(i)->setReadOnly(false); 3739 events.at(i)->setReadOnly(false);
3731 } 3740 }
3732 3741
3733 QPtrList<Todo> todos = mCalendar->todos(); 3742 QPtrList<Todo> todos = mCalendar->todos();
3734 for(uint i=0; i<todos.count(); ++i) { 3743 for(uint i=0; i<todos.count(); ++i) {
3735 todos.at(i)->setOrganizer(KOPrefs::instance()->email()); 3744 todos.at(i)->setOrganizer(KOPrefs::instance()->email());
3736 todos.at(i)->recreate(); 3745 todos.at(i)->recreate();
3737 todos.at(i)->setReadOnly(false); 3746 todos.at(i)->setReadOnly(false);
3738 } 3747 }
3739 3748
3740 QPtrList<Journal> journals = mCalendar->journals(); 3749 QPtrList<Journal> journals = mCalendar->journals();
3741 for(uint i=0; i<journals.count(); ++i) { 3750 for(uint i=0; i<journals.count(); ++i) {
3742 journals.at(i)->setOrganizer(KOPrefs::instance()->email()); 3751 journals.at(i)->setOrganizer(KOPrefs::instance()->email());
3743 journals.at(i)->recreate(); 3752 journals.at(i)->recreate();
3744 journals.at(i)->setReadOnly(false); 3753 journals.at(i)->setReadOnly(false);
3745 } 3754 }
3746 3755
3747 updateView(); 3756 updateView();
3748} 3757}
3749 3758
3750void CalendarView::showIntro() 3759void CalendarView::showIntro()
3751{ 3760{
3752 kdDebug() << "To be implemented." << endl; 3761 kdDebug() << "To be implemented." << endl;
3753} 3762}
3754 3763
3755QWidgetStack *CalendarView::viewStack() 3764QWidgetStack *CalendarView::viewStack()
3756{ 3765{
3757 return mRightFrame; 3766 return mRightFrame;
3758} 3767}
3759 3768
3760QWidget *CalendarView::leftFrame() 3769QWidget *CalendarView::leftFrame()
3761{ 3770{
3762 return ( QWidget *)mLeftFrame; 3771 return ( QWidget *)mLeftFrame;
3763} 3772}
3764 3773
3765DateNavigator *CalendarView::dateNavigator() 3774DateNavigator *CalendarView::dateNavigator()
3766{ 3775{
3767 return mNavigator; 3776 return mNavigator;
3768} 3777}
3769 3778
3770KDateNavigator* CalendarView::dateNavigatorWidget() 3779KDateNavigator* CalendarView::dateNavigatorWidget()
3771{ 3780{
3772 return mDateNavigator->navigatorView(); 3781 return mDateNavigator->navigatorView();
3773} 3782}
3774void CalendarView::toggleDateNavigatorWidget() 3783void CalendarView::toggleDateNavigatorWidget()
3775{ 3784{
3776 KOPrefs::instance()->mShowDateNavigator = !KOPrefs::instance()->mShowDateNavigator ; 3785 KOPrefs::instance()->mShowDateNavigator = !KOPrefs::instance()->mShowDateNavigator ;
3777 3786
3778 if (!KOPrefs::instance()->mShowDateNavigator ) 3787 if (!KOPrefs::instance()->mShowDateNavigator )
3779 mDateNavigator->hide(); 3788 mDateNavigator->hide();
3780 else 3789 else
3781 mDateNavigator->show(); 3790 mDateNavigator->show();
3782} 3791}
3783void CalendarView::addView(KOrg::BaseView *view) 3792void CalendarView::addView(KOrg::BaseView *view)
3784{ 3793{
3785 mViewManager->addView(view); 3794 mViewManager->addView(view);
3786} 3795}
3787 3796
3788void CalendarView::showView(KOrg::BaseView *view) 3797void CalendarView::showView(KOrg::BaseView *view)
3789{ 3798{
3790 mViewManager->showView(view, mLeftFrame->isVisible()); 3799 mViewManager->showView(view, mLeftFrame->isVisible());
3791} 3800}
3792 3801
3793Incidence *CalendarView::currentSelection() 3802Incidence *CalendarView::currentSelection()
3794{ 3803{
3795 return mViewManager->currentSelection(); 3804 return mViewManager->currentSelection();
3796} 3805}
3797void CalendarView::toggleAllDaySize() 3806void CalendarView::toggleAllDaySize()
3798{ 3807{
3799 /* 3808 /*
3800 if ( KOPrefs::instance()->mAllDaySize > 47 ) 3809 if ( KOPrefs::instance()->mAllDaySize > 47 )
3801 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize /2; 3810 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize /2;
3802 else 3811 else
3803 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize *2; 3812 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize *2;
3804 */ 3813 */
3805 viewManager()->agendaView()->toggleAllDay(); 3814 viewManager()->agendaView()->toggleAllDay();
3806} 3815}
3807void CalendarView::toggleExpand() 3816void CalendarView::toggleExpand()
3808{ 3817{
3809 // if ( mLeftFrame->isHidden() ) { 3818 // if ( mLeftFrame->isHidden() ) {
3810 // mLeftFrame->show(); 3819 // mLeftFrame->show();
3811 // emit calendarViewExpanded( false ); 3820 // emit calendarViewExpanded( false );
3812 // } else { 3821 // } else {
3813 // mLeftFrame->hide(); 3822 // mLeftFrame->hide();
3814 // emit calendarViewExpanded( true ); 3823 // emit calendarViewExpanded( true );
3815 // } 3824 // }
3816 //qDebug(" CalendarView::toggleExpand()"); 3825 //qDebug(" CalendarView::toggleExpand()");
3817 globalFlagBlockAgenda = 1; 3826 globalFlagBlockAgenda = 1;
3818 emit calendarViewExpanded( !mLeftFrame->isHidden() ); 3827 emit calendarViewExpanded( !mLeftFrame->isHidden() );
3819 globalFlagBlockAgenda = 5; 3828 globalFlagBlockAgenda = 5;
3820 mViewManager->raiseCurrentView( !mLeftFrame->isHidden() ); 3829 mViewManager->raiseCurrentView( !mLeftFrame->isHidden() );
3821 //mViewManager->showView( 0, true ); 3830 //mViewManager->showView( 0, true );
3822} 3831}
3823 3832
3824void CalendarView::calendarModified( bool modified, Calendar * ) 3833void CalendarView::calendarModified( bool modified, Calendar * )
3825{ 3834{
3826 setModified( modified ); 3835 setModified( modified );
3827} 3836}
3828 3837
3829Todo *CalendarView::selectedTodo() 3838Todo *CalendarView::selectedTodo()
3830{ 3839{
3831 Incidence *incidence = currentSelection(); 3840 Incidence *incidence = currentSelection();
3832 if ( incidence && incidence->type() == "Todo" ) { 3841 if ( incidence && incidence->type() == "Todo" ) {
3833 return static_cast<Todo *>( incidence ); 3842 return static_cast<Todo *>( incidence );
3834 } 3843 }
3835 3844
3836 incidence = mTodoList->selectedIncidences().first(); 3845 incidence = mTodoList->selectedIncidences().first();
3837 if ( incidence && incidence->type() == "Todo" ) { 3846 if ( incidence && incidence->type() == "Todo" ) {
3838 return static_cast<Todo *>( incidence ); 3847 return static_cast<Todo *>( incidence );
3839 } 3848 }
3840 3849
3841 return 0; 3850 return 0;
3842} 3851}
3843 3852
3844void CalendarView::dialogClosing(Incidence *in) 3853void CalendarView::dialogClosing(Incidence *in)
3845{ 3854{
3846 // mDialogList.remove(in); 3855 // mDialogList.remove(in);
3847} 3856}
3848 3857
3849void CalendarView::showIncidence() 3858void CalendarView::showIncidence()
3850{ 3859{
3851 mViewerCallerIsSearchDialog = false; 3860 mViewerCallerIsSearchDialog = false;
3852 Incidence *incidence = currentSelection(); 3861 Incidence *incidence = currentSelection();
3853 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3862 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3854 if ( incidence ) { 3863 if ( incidence ) {
3855 ShowIncidenceVisitor v; 3864 ShowIncidenceVisitor v;
3856 v.act( incidence, this ); 3865 v.act( incidence, this );
3857 } 3866 }
3858} 3867}
3859void CalendarView::editIncidenceDescription() 3868void CalendarView::editIncidenceDescription()
3860{ 3869{
3861 mFlagEditDescription = true; 3870 mFlagEditDescription = true;
3862 editIncidence(); 3871 editIncidence();
3863 mFlagEditDescription = false; 3872 mFlagEditDescription = false;
3864} 3873}
3865void CalendarView::editIncidence() 3874void CalendarView::editIncidence()
3866{ 3875{
3867 // qDebug("editIncidence() "); 3876 // qDebug("editIncidence() ");
3868 Incidence *incidence = currentSelection(); 3877 Incidence *incidence = currentSelection();
3869 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3878 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3870 if ( incidence ) { 3879 if ( incidence ) {
3871 EditIncidenceVisitor v; 3880 EditIncidenceVisitor v;
3872 v.act( incidence, this ); 3881 v.act( incidence, this );
3873 } 3882 }
3874} 3883}
3875 3884
3876void CalendarView::deleteIncidence() 3885void CalendarView::deleteIncidence()
3877{ 3886{
3878 Incidence *incidence = currentSelection(); 3887 Incidence *incidence = currentSelection();
3879 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3888 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3880 if ( incidence ) { 3889 if ( incidence ) {
3881 deleteIncidence(incidence); 3890 deleteIncidence(incidence);
3882 } 3891 }
3883} 3892}
3884 3893
3885void CalendarView::showIncidence(Incidence *incidence) 3894void CalendarView::showIncidence(Incidence *incidence)
3886{ 3895{
3887 mViewerCallerIsSearchDialog = false; 3896 mViewerCallerIsSearchDialog = false;
3888 //qDebug("%x %x ",sender (), mDialogManager->getSearchDialog() ); 3897 //qDebug("%x %x ",sender (), mDialogManager->getSearchDialog() );
3889 if ( sender() && mDialogManager->getSearchDialog() ) { 3898 if ( sender() && mDialogManager->getSearchDialog() ) {
3890 if ( sender () == mDialogManager->getSearchDialog()->listview() ) { 3899 if ( sender () == mDialogManager->getSearchDialog()->listview() ) {
3891 mViewerCallerIsSearchDialog = true; 3900 mViewerCallerIsSearchDialog = true;
3892 } 3901 }
3893 } 3902 }
3894 if ( incidence ) { 3903 if ( incidence ) {
3895 ShowIncidenceVisitor v; 3904 ShowIncidenceVisitor v;
3896 v.act( incidence, this ); 3905 v.act( incidence, this );
3897 } 3906 }
3898} 3907}
3899 3908
3900void CalendarView::editIncidence(Incidence *incidence) 3909void CalendarView::editIncidence(Incidence *incidence)
3901{ 3910{
3902 if ( incidence ) { 3911 if ( incidence ) {
3903 3912
3904 EditIncidenceVisitor v; 3913 EditIncidenceVisitor v;
3905 v.act( incidence, this ); 3914 v.act( incidence, this );
3906 3915
3907 } 3916 }
3908} 3917}
3909 3918
3910void CalendarView::deleteIncidence(Incidence *incidence) 3919void CalendarView::deleteIncidence(Incidence *incidence)
3911{ 3920{
3912 //qDebug(" CalendarView::deleteIncidence "); 3921 //qDebug(" CalendarView::deleteIncidence ");
3913 if ( incidence ) { 3922 if ( incidence ) {
3914 DeleteIncidenceVisitor v; 3923 DeleteIncidenceVisitor v;
3915 v.act( incidence, this ); 3924 v.act( incidence, this );
3916 } 3925 }
3917} 3926}
3918 3927
3919 3928
3920void CalendarView::lookForOutgoingMessages() 3929void CalendarView::lookForOutgoingMessages()
3921{ 3930{
3922 OutgoingDialog *ogd = mDialogManager->outgoingDialog(); 3931 OutgoingDialog *ogd = mDialogManager->outgoingDialog();
3923 ogd->loadMessages(); 3932 ogd->loadMessages();
3924} 3933}
3925 3934
3926void CalendarView::lookForIncomingMessages() 3935void CalendarView::lookForIncomingMessages()
3927{ 3936{
3928 IncomingDialog *icd = mDialogManager->incomingDialog(); 3937 IncomingDialog *icd = mDialogManager->incomingDialog();
3929 icd->retrieve(); 3938 icd->retrieve();
3930} 3939}
3931 3940
3932bool CalendarView::removeCompletedSubTodos( Todo* t ) 3941bool CalendarView::removeCompletedSubTodos( Todo* t )
3933{ 3942{
3934 bool deleteTodo = true; 3943 bool deleteTodo = true;
3935 QPtrList<Incidence> subTodos; 3944 QPtrList<Incidence> subTodos;
3936 Incidence *aTodo; 3945 Incidence *aTodo;
3937 subTodos = t->relations(); 3946 subTodos = t->relations();
3938 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) { 3947 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) {
3939 if (! removeCompletedSubTodos( (Todo*) aTodo )) 3948 if (! removeCompletedSubTodos( (Todo*) aTodo ))
3940 deleteTodo = false; 3949 deleteTodo = false;
3941 } 3950 }
3942 if ( deleteTodo ) { 3951 if ( deleteTodo ) {
3943 if ( t->isCompleted() && !t->doesRecur()) { 3952 if ( t->isCompleted() && !t->doesRecur()) {
3944 checkExternalId( t ); 3953 checkExternalId( t );
3945 mCalendar->deleteTodo( t ); 3954 mCalendar->deleteTodo( t );
3946 changeTodoDisplay( t,KOGlobals::EVENTDELETED ); 3955 changeTodoDisplay( t,KOGlobals::EVENTDELETED );
3947 } 3956 }
3948 else 3957 else
3949 deleteTodo = false; 3958 deleteTodo = false;
3950 } 3959 }
3951 return deleteTodo; 3960 return deleteTodo;
3952 3961
3953} 3962}
3954void CalendarView::purgeCompleted() 3963void CalendarView::purgeCompleted()
3955{ 3964{
3956 int result = KMessageBox::warningContinueCancel(this, 3965 int result = KMessageBox::warningContinueCancel(this,
3957 i18n("Delete all\ncompleted To-Dos?"),i18n("Purge To-Dos"),i18n("Purge")); 3966 i18n("Delete all\ncompleted To-Dos?"),i18n("Purge To-Dos"),i18n("Purge"));
3958 3967
3959 if (result == KMessageBox::Continue) { 3968 if (result == KMessageBox::Continue) {
3960 3969
3961 QPtrList<Todo> todoCal; 3970 QPtrList<Todo> todoCal;
3962 QPtrList<Todo> rootTodos; 3971 QPtrList<Todo> rootTodos;
3963 //QPtrList<Incidence> rel; 3972 //QPtrList<Incidence> rel;
3964 Todo *aTodo;//, *rTodo; 3973 Todo *aTodo;//, *rTodo;
3965 Incidence *rIncidence; 3974 Incidence *rIncidence;
3966 bool childDelete = false; 3975 bool childDelete = false;
3967 bool deletedOne = true; 3976 bool deletedOne = true;
3968 todoCal = calendar()->todos(); 3977 todoCal = calendar()->todos();
3969 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) { 3978 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) {
3970 if ( !aTodo->relatedTo() ) 3979 if ( !aTodo->relatedTo() )
3971 rootTodos.append( aTodo ); 3980 rootTodos.append( aTodo );
3972 } 3981 }
3973 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) { 3982 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) {
3974 removeCompletedSubTodos( aTodo ); 3983 removeCompletedSubTodos( aTodo );
3975 } 3984 }
3976 3985
3977 updateView(); 3986 updateView();
3978 } 3987 }
3979} 3988}
3980 3989
3981void CalendarView::slotCalendarChanged() 3990void CalendarView::slotCalendarChanged()
3982{ 3991{
3983 ; 3992 ;
3984} 3993}
3985 3994
3986void CalendarView::keyPressEvent ( QKeyEvent *e) 3995void CalendarView::keyPressEvent ( QKeyEvent *e)
3987{ 3996{
3988 //qDebug(" alendarView::keyPressEvent "); 3997 //qDebug(" alendarView::keyPressEvent ");
3989 e->ignore(); 3998 e->ignore();
3990} 3999}
3991 4000
3992 4001
3993bool CalendarView::sync(KSyncManager* manager, QString filename, int mode) 4002bool CalendarView::sync(KSyncManager* manager, QString filename, int mode)
3994{ 4003{
3995 // mSyncManager = manager; 4004 // mSyncManager = manager;
3996 if ( filename == QDir::homeDirPath ()+"/.kdecalendardump.ics" ) { 4005 if ( filename == QDir::homeDirPath ()+"/.kdecalendardump.ics" ) {
3997 qDebug("KO: SyncKDE request detected!"); 4006 qDebug("KO: SyncKDE request detected!");
3998 } 4007 }
3999 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); 4008 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice();
4000 mCurrentSyncName = mSyncManager->getCurrentSyncName(); 4009 mCurrentSyncName = mSyncManager->getCurrentSyncName();
4001 return syncCalendar( filename, mode ); 4010 return syncCalendar( filename, mode );
4002} 4011}
4003bool CalendarView::syncExternal(KSyncManager* manager, QString resource) 4012bool CalendarView::syncExternal(KSyncManager* manager, QString resource)
4004{ 4013{
4005 //mSyncManager = manager; 4014 //mSyncManager = manager;
4006 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); 4015 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice();
4007 mCurrentSyncName = mSyncManager->getCurrentSyncName(); 4016 mCurrentSyncName = mSyncManager->getCurrentSyncName();
4008 if ( resource == "sharp" ) 4017 if ( resource == "sharp" )
4009 syncExternal( 0 ); 4018 syncExternal( 0 );
4010 if ( resource == "phone" ) 4019 if ( resource == "phone" )
4011 syncExternal( 1 ); 4020 syncExternal( 1 );
4012 // pending setmodified 4021 // pending setmodified
4013 return true; 4022 return true;
4014} 4023}
4015void CalendarView::setSyncManager(KSyncManager* manager) 4024void CalendarView::setSyncManager(KSyncManager* manager)
4016{ 4025{
4017 mSyncManager = manager; 4026 mSyncManager = manager;
4018} 4027}
4019 4028
4020void CalendarView::removeSyncInfo( QString syncProfile) 4029void CalendarView::removeSyncInfo( QString syncProfile)
4021{ 4030{
4022 qDebug("KO: removeSyncInfo for profile %s ", syncProfile.latin1()); 4031 qDebug("KO: removeSyncInfo for profile %s ", syncProfile.latin1());
4023 mCalendar->removeSyncInfo( syncProfile ); 4032 mCalendar->removeSyncInfo( syncProfile );
4024 4033
4025} 4034}
4026 4035
4027void CalendarView::undo_delete() 4036void CalendarView::undo_delete()
4028{ 4037{
4029 //qDebug("undo_delete() "); 4038 //qDebug("undo_delete() ");
4030 Incidence* undo = mCalendar->undoIncidence(); 4039 Incidence* undo = mCalendar->undoIncidence();
4031 if ( !undo ) { 4040 if ( !undo ) {
4032 KMessageBox::sorry(this,i18n("There is nothing to undo!"), 4041 KMessageBox::sorry(this,i18n("There is nothing to undo!"),
4033 i18n("KO/Pi")); 4042 i18n("KO/Pi"));
4034 return; 4043 return;
4035 } 4044 }
4036 if ( KMessageBox::Continue ==KMessageBox::warningContinueCancel(this,undo->summary().left(25) + 4045 if ( KMessageBox::Continue ==KMessageBox::warningContinueCancel(this,undo->summary().left(25) +
4037 i18n("\nAre you sure you want\nto restore this?"), 4046 i18n("\nAre you sure you want\nto restore this?"),
4038 i18n("KO/Pi Confirmation"),i18n("Restore"))) { 4047 i18n("KO/Pi Confirmation"),i18n("Restore"))) {
4039 mCalendar->undoDeleteIncidence(); 4048 mCalendar->undoDeleteIncidence();
4040 updateView(); 4049 updateView();
4041 } 4050 }
4042} 4051}
4043 4052
4044void CalendarView::slotViewerClosed() 4053void CalendarView::slotViewerClosed()
4045{ 4054{
4046 QTimer::singleShot( 50, this, SLOT ( resetFocus() ) ); 4055 QTimer::singleShot( 50, this, SLOT ( resetFocus() ) );
4047} 4056}
4048 4057
4049void CalendarView::resetFocus() 4058void CalendarView::resetFocus()
4050{ 4059{
4051 if ( mViewerCallerIsSearchDialog ) { 4060 if ( mViewerCallerIsSearchDialog ) {
4052 if ( mDialogManager->getSearchDialog()->isVisible() ){ 4061 if ( mDialogManager->getSearchDialog()->isVisible() ){
4053 mDialogManager->getSearchDialog()->raise(); 4062 mDialogManager->getSearchDialog()->raise();
4054 mDialogManager->getSearchDialog()->setActiveWindow(); 4063 mDialogManager->getSearchDialog()->setActiveWindow();
4055 mDialogManager->getSearchDialog()->listview()->resetFocus(); 4064 mDialogManager->getSearchDialog()->listview()->resetFocus();
4056 } else 4065 } else
4057 mViewerCallerIsSearchDialog = false; 4066 mViewerCallerIsSearchDialog = false;
4058 } 4067 }
4059 if ( !mViewerCallerIsSearchDialog ) { 4068 if ( !mViewerCallerIsSearchDialog ) {
4060 //mViewManager->currentView()->setFocus(); 4069 //mViewManager->currentView()->setFocus();
4061 //qDebug("sssssssssssssssset focus "); 4070 //qDebug("sssssssssssssssset focus ");
4062 topLevelWidget()->raise(); 4071 topLevelWidget()->raise();
4063 setActiveWindow(); 4072 setActiveWindow();
4064 //setFocus(); 4073 //setFocus();
4065 } 4074 }
4066 mViewerCallerIsSearchDialog = false; 4075 mViewerCallerIsSearchDialog = false;
4067} 4076}
4068 4077
4069void CalendarView::showNextAlarms() 4078void CalendarView::showNextAlarms()
4070{ 4079{
4071 QString message; 4080 QString message;
4072 QDateTime nextAl = mCalendar->nextAlarmEventDateTime(); 4081 QDateTime nextAl = mCalendar->nextAlarmEventDateTime();
4073 if ( nextAl.isValid() && mNextAlarmDateTime > QDateTime::currentDateTime() ) { 4082 if ( nextAl.isValid() && mNextAlarmDateTime > QDateTime::currentDateTime() ) {
4074 QString sum = mCalendar->nextSummary(); 4083 QString sum = mCalendar->nextSummary();
4075 QDateTime nextA = mNextAlarmDateTime; 4084 QDateTime nextA = mNextAlarmDateTime;
4076 QDateTime cur = QDateTime::currentDateTime(); 4085 QDateTime cur = QDateTime::currentDateTime();
4077 int secs = cur.secsTo( nextA ); 4086 int secs = cur.secsTo( nextA );
4078 int min = secs /60; 4087 int min = secs /60;
4079 int hours = min /60; 4088 int hours = min /60;
4080 min = min % 60; 4089 min = min % 60;
4081 int days = hours /24; 4090 int days = hours /24;
4082 hours = hours % 24; 4091 hours = hours % 24;
4083 4092
4084 message = i18n("The next alarm is in:\n"); 4093 message = i18n("The next alarm is in:\n");
4085 if ( days > 1 ) 4094 if ( days > 1 )
4086 message += i18n("%1 days\n").arg( days ); 4095 message += i18n("%1 days\n").arg( days );
4087 else if ( days == 1 ) 4096 else if ( days == 1 )
4088 message += i18n("1 day\n"); 4097 message += i18n("1 day\n");
4089 if ( hours > 1 ) 4098 if ( hours > 1 )
4090 message += i18n("%1 hours\n").arg( hours ); 4099 message += i18n("%1 hours\n").arg( hours );
4091 else if ( hours == 1 ) 4100 else if ( hours == 1 )
4092 message += i18n("1 hour\n"); 4101 message += i18n("1 hour\n");
4093 if ( min > 1 ) 4102 if ( min > 1 )
4094 message += i18n("%1 minutes\n").arg( min ); 4103 message += i18n("%1 minutes\n").arg( min );
4095 else if ( min == 1 ) 4104 else if ( min == 1 )
4096 message += i18n("1 minute\n"); 4105 message += i18n("1 minute\n");
4097 4106
4098 message += i18n("\n(%1)\n\n%2\n(%3)\n").arg( KGlobal::locale()->formatDateTime(nextA , false)).arg(sum ).arg( KGlobal::locale()->formatDateTime(nextAl , false)) ; 4107 message += i18n("\n(%1)\n\n%2\n(%3)\n").arg( KGlobal::locale()->formatDateTime(nextA , false)).arg(sum ).arg( KGlobal::locale()->formatDateTime(nextAl , false)) ;
4099 } else { 4108 } else {
4100 message = i18n("There is no next alarm."); 4109 message = i18n("There is no next alarm.");
4101 4110
4102 } 4111 }
4103 KMessageBox::information( this, message); 4112 KMessageBox::information( this, message);
4104} 4113}
diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h
index 9782ffe..05a34b4 100644
--- a/korganizer/calendarview.h
+++ b/korganizer/calendarview.h
@@ -1,619 +1,620 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000, 2001 3 Copyright (c) 2000, 2001
4 Cornelius Schumacher <schumacher@kde.org> 4 Cornelius Schumacher <schumacher@kde.org>
5 5
6 This program is free software; you can redistribute it and/or modify 6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by 7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or 8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version. 9 (at your option) any later version.
10 10
11 This program is distributed in the hope that it will be useful, 11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details. 14 GNU General Public License for more details.
15 15
16 You should have received a copy of the GNU General Public License 16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software 17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 19
20 As a special exception, permission is given to link this program 20 As a special exception, permission is given to link this program
21 with any edition of Qt, and distribute the resulting executable, 21 with any edition of Qt, and distribute the resulting executable,
22 without including the source code for Qt in the source distribution. 22 without including the source code for Qt in the source distribution.
23*/ 23*/
24#ifndef CALENDARVIEW_H 24#ifndef CALENDARVIEW_H
25#define CALENDARVIEW_H 25#define CALENDARVIEW_H
26 26
27#include <qframe.h> 27#include <qframe.h>
28#include <qlayout.h> 28#include <qlayout.h>
29#include <qwidget.h> 29#include <qwidget.h>
30#include <qptrlist.h> 30#include <qptrlist.h>
31#include <qvbox.h> 31#include <qvbox.h>
32#include <qmap.h> 32#include <qmap.h>
33#ifndef DESKTOP_VERSION 33#ifndef DESKTOP_VERSION
34#include <qtopia/ir.h> 34#include <qtopia/ir.h>
35#else 35#else
36#define Ir char 36#define Ir char
37#endif 37#endif
38#include <libkcal/calendar.h> 38#include <libkcal/calendar.h>
39#include <libkcal/scheduler.h> 39#include <libkcal/scheduler.h>
40#include <libkcal/calendarresources.h> 40#include <libkcal/calendarresources.h>
41#include <libkcal/resourcecalendar.h> 41#include <libkcal/resourcecalendar.h>
42#include <KDGanttMinimizeSplitter.h> 42#include <KDGanttMinimizeSplitter.h>
43 43
44#include <korganizer/calendarviewbase.h> 44#include <korganizer/calendarviewbase.h>
45 45
46#include <ksyncmanager.h> 46#include <ksyncmanager.h>
47 47
48class QWidgetStack; 48class QWidgetStack;
49class QSplitter; 49class QSplitter;
50 50
51class CalPrinter; 51class CalPrinter;
52class KOFilterView; 52class KOFilterView;
53class KOViewManager; 53class KOViewManager;
54class KODialogManager; 54class KODialogManager;
55class KOTodoView; 55class KOTodoView;
56class KDateNavigator; 56class KDateNavigator;
57class DateNavigatorContainer; 57class DateNavigatorContainer;
58class DateNavigator; 58class DateNavigator;
59class KOIncidenceEditor; 59class KOIncidenceEditor;
60class KDatePicker; 60class KDatePicker;
61class ResourceView; 61class ResourceView;
62class KOEventEditor; 62class KOEventEditor;
63class KOTodoEditor ; 63class KOTodoEditor ;
64class KOEventViewerDialog; 64class KOEventViewerDialog;
65class KOBeamPrefs; 65class KOBeamPrefs;
66class KSyncProfile; 66class KSyncProfile;
67class AlarmDialog; 67class AlarmDialog;
68class KCal::Attendee; 68class KCal::Attendee;
69 69
70namespace KCal { class FileStorage; } 70namespace KCal { class FileStorage; }
71 71
72using namespace KCal; 72using namespace KCal;
73 73
74/** 74/**
75 This is the main calendar widget. It provides the different vies on t he 75 This is the main calendar widget. It provides the different vies on t he
76 calendar data as well as the date navigator. It also handles synchronisation 76 calendar data as well as the date navigator. It also handles synchronisation
77 of the different views and controls the different dialogs like preferences, 77 of the different views and controls the different dialogs like preferences,
78 event editor, search dialog etc. 78 event editor, search dialog etc.
79 79
80 @short main calendar view widget 80 @short main calendar view widget
81 @author Cornelius Schumacher 81 @author Cornelius Schumacher
82*/ 82*/
83class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Observer, public KSyncInterface 83class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Observer, public KSyncInterface
84{ 84{
85 Q_OBJECT 85 Q_OBJECT
86 public: 86 public:
87 /** 87 /**
88 Constructs a new calendar view widget. 88 Constructs a new calendar view widget.
89 89
90 @param calendar calendar document 90 @param calendar calendar document
91 @param parent parent window 91 @param parent parent window
92 @param name Qt internal widget object name 92 @param name Qt internal widget object name
93 */ 93 */
94 CalendarView( CalendarResources *calendar, QWidget *parent = 0, 94 CalendarView( CalendarResources *calendar, QWidget *parent = 0,
95 const char *name = 0 ); 95 const char *name = 0 );
96 CalendarView( Calendar *calendar, QWidget *parent = 0, 96 CalendarView( Calendar *calendar, QWidget *parent = 0,
97 const char *name = 0 ); 97 const char *name = 0 );
98 virtual ~CalendarView(); 98 virtual ~CalendarView();
99 99
100 Calendar *calendar() { return mCalendar; } 100 Calendar *calendar() { return mCalendar; }
101 101
102 KOViewManager *viewManager(); 102 KOViewManager *viewManager();
103 KODialogManager *dialogManager(); 103 KODialogManager *dialogManager();
104 104
105 QDate startDate(); 105 QDate startDate();
106 QDate endDate(); 106 QDate endDate();
107 107
108 QWidgetStack *viewStack(); 108 QWidgetStack *viewStack();
109 QWidget *leftFrame(); 109 QWidget *leftFrame();
110 110
111 DateNavigator *dateNavigator(); 111 DateNavigator *dateNavigator();
112 KDateNavigator *dateNavigatorWidget(); 112 KDateNavigator *dateNavigatorWidget();
113 113
114 void addView(KOrg::BaseView *); 114 void addView(KOrg::BaseView *);
115 void showView(KOrg::BaseView *); 115 void showView(KOrg::BaseView *);
116 KOEventViewerDialog* getEventViewerDialog(); 116 KOEventViewerDialog* getEventViewerDialog();
117 Incidence *currentSelection(); 117 Incidence *currentSelection();
118 118
119 signals: 119 signals:
120 void save (); 120 void save ();
121 void saveStopTimer (); 121 void saveStopTimer ();
122 void tempDisableBR(bool); 122 void tempDisableBR(bool);
123 /** This todo has been modified */ 123 /** This todo has been modified */
124 void todoModified(Todo *, int); 124 void todoModified(Todo *, int);
125 125
126 /** when change is made to options dialog, the topwidget will catch this 126 /** when change is made to options dialog, the topwidget will catch this
127 * and emit this signal which notifies all widgets which have registered 127 * and emit this signal which notifies all widgets which have registered
128 * for notification to update their settings. */ 128 * for notification to update their settings. */
129 void configChanged(); 129 void configChanged();
130 /** emitted when the topwidget is closing down, so that any attached 130 /** emitted when the topwidget is closing down, so that any attached
131 child windows can also close. */ 131 child windows can also close. */
132 void closingDown(); 132 void closingDown();
133 /** emitted right before we die */ 133 /** emitted right before we die */
134 void closed(QWidget *); 134 void closed(QWidget *);
135 135
136 /** Emitted when state of modified flag changes */ 136 /** Emitted when state of modified flag changes */
137 void modifiedChanged(bool); 137 void modifiedChanged(bool);
138 void signalmodified(); 138 void signalmodified();
139 139
140 /** Emitted when state of read-only flag changes */ 140 /** Emitted when state of read-only flag changes */
141 void readOnlyChanged(bool); 141 void readOnlyChanged(bool);
142 142
143 /** Emitted when the unit of navigation changes */ 143 /** Emitted when the unit of navigation changes */
144 void changeNavStringPrev(const QString &); 144 void changeNavStringPrev(const QString &);
145 void changeNavStringNext(const QString &); 145 void changeNavStringNext(const QString &);
146 146
147 /** Emitted when state of events selection has changed and user is organizer*/ 147 /** Emitted when state of events selection has changed and user is organizer*/
148 void organizerEventsSelected(bool); 148 void organizerEventsSelected(bool);
149 /** Emitted when state of events selection has changed and user is attendee*/ 149 /** Emitted when state of events selection has changed and user is attendee*/
150 void groupEventsSelected(bool); 150 void groupEventsSelected(bool);
151 /** 151 /**
152 Emitted when an incidence gets selected. If the selection is cleared the 152 Emitted when an incidence gets selected. If the selection is cleared the
153 signal is emitted with 0 as argument. 153 signal is emitted with 0 as argument.
154 */ 154 */
155 void incidenceSelected( Incidence * ); 155 void incidenceSelected( Incidence * );
156 /** Emitted, when a todoitem is selected or deselected. */ 156 /** Emitted, when a todoitem is selected or deselected. */
157 void todoSelected( bool ); 157 void todoSelected( bool );
158 158
159 /** 159 /**
160 Emitted, when clipboard content changes. Parameter indicates if paste 160 Emitted, when clipboard content changes. Parameter indicates if paste
161 is possible or not. 161 is possible or not.
162 */ 162 */
163 void pasteEnabled(bool); 163 void pasteEnabled(bool);
164 164
165 /** Emitted, when the number of incoming messages has changed. */ 165 /** Emitted, when the number of incoming messages has changed. */
166 void numIncomingChanged(int); 166 void numIncomingChanged(int);
167 167
168 /** Emitted, when the number of outgoing messages has changed. */ 168 /** Emitted, when the number of outgoing messages has changed. */
169 void numOutgoingChanged(int); 169 void numOutgoingChanged(int);
170 170
171 /** Send status message, which can e.g. be displayed in the status bar. */ 171 /** Send status message, which can e.g. be displayed in the status bar. */
172 void statusMessage(const QString &); 172 void statusMessage(const QString &);
173 173
174 void calendarViewExpanded( bool ); 174 void calendarViewExpanded( bool );
175 void updateSearchDialog(); 175 void updateSearchDialog();
176 176
177 177
178 public slots: 178 public slots:
179 void slotprintSelInc();
179 void showNextAlarms(); 180 void showNextAlarms();
180 void showOpenError(); 181 void showOpenError();
181 void watchSavedFile(); 182 void watchSavedFile();
182 void recheckTimerAlarm(); 183 void recheckTimerAlarm();
183 void checkNextTimerAlarm(); 184 void checkNextTimerAlarm();
184 void addAlarm(const QDateTime &qdt, const QString &noti ); 185 void addAlarm(const QDateTime &qdt, const QString &noti );
185 void addSuspendAlarm(const QDateTime &qdt, const QString &noti ); 186 void addSuspendAlarm(const QDateTime &qdt, const QString &noti );
186 void removeAlarm(const QDateTime &qdt, const QString &noti ); 187 void removeAlarm(const QDateTime &qdt, const QString &noti );
187 188
188 /** options dialog made a changed to the configuration. we catch this 189 /** options dialog made a changed to the configuration. we catch this
189 * and notify all widgets which need to update their configuration. */ 190 * and notify all widgets which need to update their configuration. */
190 void updateConfig(); 191 void updateConfig();
191 192
192 void insertBirthdays(const QString& uid, const QStringList& birthdayList, 193 void insertBirthdays(const QString& uid, const QStringList& birthdayList,
193 const QStringList& anniversaryList, const QStringList& realNameList, 194 const QStringList& anniversaryList, const QStringList& realNameList,
194 const QStringList& emailList, const QStringList& assembledNameList, 195 const QStringList& emailList, const QStringList& assembledNameList,
195 const QStringList& uidList); 196 const QStringList& uidList);
196 197
197 /** 198 /**
198 Load calendar from file \a filename. If \a merge is true, load 199 Load calendar from file \a filename. If \a merge is true, load
199 calendar into existing one, if it is false, clear calendar, before 200 calendar into existing one, if it is false, clear calendar, before
200 loading. Return true, if calendar could be successfully loaded. 201 loading. Return true, if calendar could be successfully loaded.
201 */ 202 */
202 bool openCalendar(QString filename, bool merge=false); 203 bool openCalendar(QString filename, bool merge=false);
203 bool syncCalendar(QString filename,int mode = 0 ); 204 bool syncCalendar(QString filename,int mode = 0 );
204 205
205 /** 206 /**
206 Save calendar data to file. Return true if calendar could be 207 Save calendar data to file. Return true if calendar could be
207 successfully saved. 208 successfully saved.
208 */ 209 */
209 bool saveCalendar(QString filename); 210 bool saveCalendar(QString filename);
210 211
211 /** 212 /**
212 Close calendar. Clear calendar data and reset views to display an empty 213 Close calendar. Clear calendar data and reset views to display an empty
213 calendar. 214 calendar.
214 */ 215 */
215 void closeCalendar(); 216 void closeCalendar();
216 217
217 /** Archive old events of calendar */ 218 /** Archive old events of calendar */
218 void archiveCalendar(); 219 void archiveCalendar();
219 220
220 void showIncidence(); 221 void showIncidence();
221 void editIncidence(); 222 void editIncidence();
222 void editIncidenceDescription(); 223 void editIncidenceDescription();
223 void deleteIncidence(); 224 void deleteIncidence();
224 void cloneIncidence(); 225 void cloneIncidence();
225 void moveIncidence(); 226 void moveIncidence();
226 void beamIncidence(); 227 void beamIncidence();
227 void toggleCancelIncidence(); 228 void toggleCancelIncidence();
228 229
229 /** create an editeventwin with supplied date/time, and if bool is true, 230 /** create an editeventwin with supplied date/time, and if bool is true,
230 * make the event take all day. */ 231 * make the event take all day. */
231 void newEvent(QDateTime, QDateTime, bool allDay ); 232 void newEvent(QDateTime, QDateTime, bool allDay );
232 void newEvent(QDateTime, QDateTime); 233 void newEvent(QDateTime, QDateTime);
233 void newEvent(QDateTime fh); 234 void newEvent(QDateTime fh);
234 void newEvent(QDate dt); 235 void newEvent(QDate dt);
235 /** create new event without having a date hint. Takes current date as 236 /** create new event without having a date hint. Takes current date as
236 default hint. */ 237 default hint. */
237 void newEvent(); 238 void newEvent();
238 void newFloatingEvent(); 239 void newFloatingEvent();
239 240
240 /** Create a read-only viewer dialog for the supplied incidence. It calls the correct showXXX method*/ 241 /** Create a read-only viewer dialog for the supplied incidence. It calls the correct showXXX method*/
241 void showIncidence(Incidence *); 242 void showIncidence(Incidence *);
242 /** Create an editor for the supplied incidence. It calls the correct editXXX method*/ 243 /** Create an editor for the supplied incidence. It calls the correct editXXX method*/
243 void editIncidence(Incidence *); 244 void editIncidence(Incidence *);
244 /** Delete the supplied incidence. It calls the correct deleteXXX method*/ 245 /** Delete the supplied incidence. It calls the correct deleteXXX method*/
245 void deleteIncidence(Incidence *); 246 void deleteIncidence(Incidence *);
246 void cloneIncidence(Incidence *); 247 void cloneIncidence(Incidence *);
247 void cancelIncidence(Incidence *); 248 void cancelIncidence(Incidence *);
248 /** Create an editor for the supplied event. */ 249 /** Create an editor for the supplied event. */
249 void editEvent(Event *); 250 void editEvent(Event *);
250 /** Delete the supplied event. */ 251 /** Delete the supplied event. */
251 void deleteEvent(Event *); 252 void deleteEvent(Event *);
252 /** Delete the event with the given unique ID. Returns false, if event wasn't 253 /** Delete the event with the given unique ID. Returns false, if event wasn't
253 found. */ 254 found. */
254 bool deleteEvent(const QString &uid); 255 bool deleteEvent(const QString &uid);
255 /** Create a read-only viewer dialog for the supplied event. */ 256 /** Create a read-only viewer dialog for the supplied event. */
256 void showEvent(Event *); 257 void showEvent(Event *);
257 258
258 void editJournal(Journal *); 259 void editJournal(Journal *);
259 void showJournal(Journal *); 260 void showJournal(Journal *);
260 void deleteJournal(Journal *); 261 void deleteJournal(Journal *);
261 /** Create an editor dialog for a todo */ 262 /** Create an editor dialog for a todo */
262 void editTodo(Todo *); 263 void editTodo(Todo *);
263 /** Create a read-only viewer dialog for the supplied todo */ 264 /** Create a read-only viewer dialog for the supplied todo */
264 void showTodo(Todo *); 265 void showTodo(Todo *);
265 /** create new todo */ 266 /** create new todo */
266 void newTodo(); 267 void newTodo();
267 void newTodoDateTime(QDateTime, bool allday); 268 void newTodoDateTime(QDateTime, bool allday);
268 /** create new todo with a parent todo */ 269 /** create new todo with a parent todo */
269 void newSubTodo(); 270 void newSubTodo();
270 /** create new todo with a parent todo */ 271 /** create new todo with a parent todo */
271 void newSubTodo(Todo *); 272 void newSubTodo(Todo *);
272 /** Delete todo */ 273 /** Delete todo */
273 void deleteTodo(Todo *); 274 void deleteTodo(Todo *);
274 275
275 276
276 /** Check if clipboard contains vCalendar event. The signal pasteEnabled() is 277 /** Check if clipboard contains vCalendar event. The signal pasteEnabled() is
277 * emitted as result. */ 278 * emitted as result. */
278 void checkClipboard(); 279 void checkClipboard();
279 280
280 /** using the KConfig associated with the kapp variable, read in the 281 /** using the KConfig associated with the kapp variable, read in the
281 * settings from the config file. 282 * settings from the config file.
282 */ 283 */
283 void readSettings(); 284 void readSettings();
284 285
285 /** write current state to config file. */ 286 /** write current state to config file. */
286 void writeSettings(); 287 void writeSettings();
287 288
288 /** read settings for calendar filters */ 289 /** read settings for calendar filters */
289 void readFilterSettings(KConfig *config); 290 void readFilterSettings(KConfig *config);
290 291
291 /** write settings for calendar filters */ 292 /** write settings for calendar filters */
292 void writeFilterSettings(KConfig *config); 293 void writeFilterSettings(KConfig *config);
293 294
294 /** passes on the message that an event has changed to the currently 295 /** passes on the message that an event has changed to the currently
295 * activated view so that it can make appropriate display changes. */ 296 * activated view so that it can make appropriate display changes. */
296 void changeEventDisplay(Event *, int); 297 void changeEventDisplay(Event *, int);
297 void changeIncidenceDisplay(Incidence *, int); 298 void changeIncidenceDisplay(Incidence *, int);
298 void changeTodoDisplay(Todo *, int); 299 void changeTodoDisplay(Todo *, int);
299 300
300 void eventAdded(Event *); 301 void eventAdded(Event *);
301 void eventChanged(Event *); 302 void eventChanged(Event *);
302 void eventToBeDeleted(Event *); 303 void eventToBeDeleted(Event *);
303 void eventDeleted(); 304 void eventDeleted();
304 305
305 void todoAdded(Todo *); 306 void todoAdded(Todo *);
306 void todoChanged(Todo *); 307 void todoChanged(Todo *);
307 void todoToBeDeleted(Todo *); 308 void todoToBeDeleted(Todo *);
308 void todoDeleted(); 309 void todoDeleted();
309 310
310 void updateView(const QDate &start, const QDate &end); 311 void updateView(const QDate &start, const QDate &end);
311 void updateView(); 312 void updateView();
312 313
313 /** Full update of visible todo views */ 314 /** Full update of visible todo views */
314 void updateTodoViews(); 315 void updateTodoViews();
315 316
316 void updateUnmanagedViews(); 317 void updateUnmanagedViews();
317 318
318 /** cut the current appointment to the clipboard */ 319 /** cut the current appointment to the clipboard */
319 void edit_cut(); 320 void edit_cut();
320 321
321 /** copy the current appointment(s) to the clipboard */ 322 /** copy the current appointment(s) to the clipboard */
322 void edit_copy(); 323 void edit_copy();
323 324
324 /** paste the current vobject(s) in the clipboard buffer into calendar */ 325 /** paste the current vobject(s) in the clipboard buffer into calendar */
325 void edit_paste(); 326 void edit_paste();
326 327
327 /** edit viewing and configuration options. */ 328 /** edit viewing and configuration options. */
328 void edit_options(); 329 void edit_options();
329 /** 330 /**
330 Functions for printing, previewing a print, and setting up printing 331 Functions for printing, previewing a print, and setting up printing
331 parameters. 332 parameters.
332 */ 333 */
333 void print(); 334 void print();
334 void printSetup(); 335 void printSetup();
335 void printPreview(); 336 void printPreview();
336 337
337 /** Export as iCalendar file */ 338 /** Export as iCalendar file */
338 void exportICalendar(); 339 void exportICalendar();
339 340
340 /** Export as vCalendar file */ 341 /** Export as vCalendar file */
341 bool exportVCalendar( QString fn); 342 bool exportVCalendar( QString fn);
342 343
343 /** pop up a dialog to show an existing appointment. */ 344 /** pop up a dialog to show an existing appointment. */
344 void appointment_show(); 345 void appointment_show();
345 /** 346 /**
346 * pop up an Appointment Dialog to edit an existing appointment.Get 347 * pop up an Appointment Dialog to edit an existing appointment.Get
347 * information on the appointment from the list of unique IDs that is 348 * information on the appointment from the list of unique IDs that is
348 * currently in the View, called currIds. 349 * currently in the View, called currIds.
349 */ 350 */
350 void appointment_edit(); 351 void appointment_edit();
351 /** 352 /**
352 * pop up dialog confirming deletion of currently selected event in the 353 * pop up dialog confirming deletion of currently selected event in the
353 * View. 354 * View.
354 */ 355 */
355 void appointment_delete(); 356 void appointment_delete();
356 357
357 /** mails the currently selected event to a particular user as a vCalendar 358 /** mails the currently selected event to a particular user as a vCalendar
358 attachment. */ 359 attachment. */
359 void action_mail(); 360 void action_mail();
360 361
361 /* frees a subtodo from it's relation */ 362 /* frees a subtodo from it's relation */
362 void todo_unsub( Todo * ); 363 void todo_unsub( Todo * );
363 void todo_resub( Todo * parent, Todo * sub ); 364 void todo_resub( Todo * parent, Todo * sub );
364 365
365 /** Take ownership of selected event. */ 366 /** Take ownership of selected event. */
366 void takeOverEvent(); 367 void takeOverEvent();
367 368
368 /** Take ownership of all events in calendar. */ 369 /** Take ownership of all events in calendar. */
369 void takeOverCalendar(); 370 void takeOverCalendar();
370 371
371 /** query whether or not the calendar is "dirty". */ 372 /** query whether or not the calendar is "dirty". */
372 bool isModified(); 373 bool isModified();
373 /** set the state of calendar. Modified means "dirty", i.e. needing a save. */ 374 /** set the state of calendar. Modified means "dirty", i.e. needing a save. */
374 void setModified(bool modified=true); 375 void setModified(bool modified=true);
375 376
376 /** query if the calendar is read-only. */ 377 /** query if the calendar is read-only. */
377 bool isReadOnly(); 378 bool isReadOnly();
378 /** set state of calendar to read-only */ 379 /** set state of calendar to read-only */
379 void setReadOnly(bool readOnly=true); 380 void setReadOnly(bool readOnly=true);
380 381
381 void eventUpdated(Incidence *); 382 void eventUpdated(Incidence *);
382 383
383 /* iTIP scheduling actions */ 384 /* iTIP scheduling actions */
384 void schedule_publish(Incidence *incidence = 0); 385 void schedule_publish(Incidence *incidence = 0);
385 void schedule_request(Incidence *incidence = 0); 386 void schedule_request(Incidence *incidence = 0);
386 void schedule_refresh(Incidence *incidence = 0); 387 void schedule_refresh(Incidence *incidence = 0);
387 void schedule_cancel(Incidence *incidence = 0); 388 void schedule_cancel(Incidence *incidence = 0);
388 void schedule_add(Incidence *incidence = 0); 389 void schedule_add(Incidence *incidence = 0);
389 void schedule_reply(Incidence *incidence = 0); 390 void schedule_reply(Incidence *incidence = 0);
390 void schedule_counter(Incidence *incidence = 0); 391 void schedule_counter(Incidence *incidence = 0);
391 void schedule_declinecounter(Incidence *incidence = 0); 392 void schedule_declinecounter(Incidence *incidence = 0);
392 void schedule_publish_freebusy(int daysToPublish = 30); 393 void schedule_publish_freebusy(int daysToPublish = 30);
393 394
394 void openAddressbook(); 395 void openAddressbook();
395 396
396 void editFilters(); 397 void editFilters();
397 void toggleFilerEnabled(); 398 void toggleFilerEnabled();
398 QPtrList<CalFilter> filters(); 399 QPtrList<CalFilter> filters();
399 void toggleFilter(); 400 void toggleFilter();
400 void showFilter(bool visible); 401 void showFilter(bool visible);
401 void updateFilter(); 402 void updateFilter();
402 void filterEdited(); 403 void filterEdited();
403 void selectFilter( int ); 404 void selectFilter( int );
404 KOFilterView *filterView(); 405 KOFilterView *filterView();
405 406
406 void showIntro(); 407 void showIntro();
407 408
408 /** Move the curdatepient view date to today */ 409 /** Move the curdatepient view date to today */
409 void goToday(); 410 void goToday();
410 411
411 /** Move to the next date(s) in the current view */ 412 /** Move to the next date(s) in the current view */
412 void goNext(); 413 void goNext();
413 414
414 /** Move to the previous date(s) in the current view */ 415 /** Move to the previous date(s) in the current view */
415 void goPrevious(); 416 void goPrevious();
416 /** Move to the next date(s) in the current view */ 417 /** Move to the next date(s) in the current view */
417 void goNextMonth(); 418 void goNextMonth();
418 419
419 /** Move to the previous date(s) in the current view */ 420 /** Move to the previous date(s) in the current view */
420 void goPreviousMonth(); 421 void goPreviousMonth();
421 422
422 void toggleExpand(); 423 void toggleExpand();
423 void toggleDateNavigatorWidget(); 424 void toggleDateNavigatorWidget();
424 void toggleAllDaySize(); 425 void toggleAllDaySize();
425 void dialogClosing(Incidence *); 426 void dialogClosing(Incidence *);
426 427
427 /** Look for new messages in the inbox */ 428 /** Look for new messages in the inbox */
428 void lookForIncomingMessages(); 429 void lookForIncomingMessages();
429 /** Look for new messages in the outbox */ 430 /** Look for new messages in the outbox */
430 void lookForOutgoingMessages(); 431 void lookForOutgoingMessages();
431 432
432 void processMainViewSelection( Incidence * ); 433 void processMainViewSelection( Incidence * );
433 void processTodoListSelection( Incidence * ); 434 void processTodoListSelection( Incidence * );
434 435
435 void processIncidenceSelection( Incidence * ); 436 void processIncidenceSelection( Incidence * );
436 437
437 void purgeCompleted(); 438 void purgeCompleted();
438 bool removeCompletedSubTodos( Todo* ); 439 bool removeCompletedSubTodos( Todo* );
439 void slotCalendarChanged(); 440 void slotCalendarChanged();
440 bool importBday(); 441 bool importBday();
441 bool addAnniversary( QDate data, QString name, KCal::Attendee* a , bool birthday ); 442 bool addAnniversary( QDate data, QString name, KCal::Attendee* a , bool birthday );
442 bool importQtopia( const QString &categoriesFile, 443 bool importQtopia( const QString &categoriesFile,
443 const QString &datebookFile, 444 const QString &datebookFile,
444 const QString &tasklistFile ); 445 const QString &tasklistFile );
445 void syncExternal( int mode ); 446 void syncExternal( int mode );
446 void slotSelectPickerDate( QDate ) ; 447 void slotSelectPickerDate( QDate ) ;
447 void showDatePicker() ; 448 void showDatePicker() ;
448 void showDatePickerPopup() ; 449 void showDatePickerPopup() ;
449 void moveIncidence(Incidence *) ; 450 void moveIncidence(Incidence *) ;
450 void beamIncidence(Incidence *) ; 451 void beamIncidence(Incidence *) ;
451 void beamCalendar() ; 452 void beamCalendar() ;
452 void beamFilteredCalendar() ; 453 void beamFilteredCalendar() ;
453 void beamIncidenceList(QPtrList<Incidence>) ; 454 void beamIncidenceList(QPtrList<Incidence>) ;
454 void manageCategories(); 455 void manageCategories();
455 int addCategories(); 456 int addCategories();
456 void removeCategories(); 457 void removeCategories();
457 void setSyncDevice( QString ); 458 void setSyncDevice( QString );
458 void setSyncName( QString ); 459 void setSyncName( QString );
459 void showDay( QDate ); 460 void showDay( QDate );
460 void undo_delete(); 461 void undo_delete();
461 protected slots: 462 protected slots:
462 void resetFocus(); 463 void resetFocus();
463 void slotViewerClosed(); 464 void slotViewerClosed();
464 void timerAlarm(); 465 void timerAlarm();
465 void suspendAlarm(); 466 void suspendAlarm();
466 void beamDone( Ir *ir ); 467 void beamDone( Ir *ir );
467 /** Select a view or adapt the current view to display the specified dates. */ 468 /** Select a view or adapt the current view to display the specified dates. */
468 void showDates( const KCal::DateList & ); 469 void showDates( const KCal::DateList & );
469 void selectWeekNum ( int ); 470 void selectWeekNum ( int );
470 471
471 public: 472 public:
472 // show a standard warning 473 // show a standard warning
473 // returns KMsgBox::yesNoCancel() 474 // returns KMsgBox::yesNoCancel()
474 int msgCalModified(); 475 int msgCalModified();
475 virtual bool sync(KSyncManager* manager, QString filename, int mode); 476 virtual bool sync(KSyncManager* manager, QString filename, int mode);
476 477
477 virtual bool syncExternal(KSyncManager* manager, QString resource); 478 virtual bool syncExternal(KSyncManager* manager, QString resource);
478 virtual void removeSyncInfo( QString syncProfile); 479 virtual void removeSyncInfo( QString syncProfile);
479 void setSyncManager(KSyncManager* manager); 480 void setSyncManager(KSyncManager* manager);
480 void setLoadedFileVersion(QDateTime); 481 void setLoadedFileVersion(QDateTime);
481 bool checkFileVersion(QString fn); 482 bool checkFileVersion(QString fn);
482 bool checkFileChanged(QString fn); 483 bool checkFileChanged(QString fn);
483 Event* getLastSyncEvent(); 484 Event* getLastSyncEvent();
484 /** Adapt navigation units correpsonding to step size of navigation of the 485 /** Adapt navigation units correpsonding to step size of navigation of the
485 * current view. 486 * current view.
486 */ 487 */
487 void adaptNavigationUnits(); 488 void adaptNavigationUnits();
488 bool synchronizeCalendar( Calendar* local, Calendar* remote, int mode ); 489 bool synchronizeCalendar( Calendar* local, Calendar* remote, int mode );
489 int takeEvent( Incidence* local, Incidence* remote, int mode, bool full = false ); 490 int takeEvent( Incidence* local, Incidence* remote, int mode, bool full = false );
490 //Attendee* getYourAttendee(Event *event); 491 //Attendee* getYourAttendee(Event *event);
491 void setBlockShowDates( bool b ) { mBlockShowDates = b ;} 492 void setBlockShowDates( bool b ) { mBlockShowDates = b ;}
492 protected: 493 protected:
493 void schedule(Scheduler::Method, Incidence *incidence = 0); 494 void schedule(Scheduler::Method, Incidence *incidence = 0);
494 495
495 // returns KMsgBox::OKCandel() 496 // returns KMsgBox::OKCandel()
496 int msgItemDelete(const QString name); 497 int msgItemDelete(const QString name);
497 void showEventEditor(); 498 void showEventEditor();
498 void showTodoEditor(); 499 void showTodoEditor();
499 void writeLocale(); 500 void writeLocale();
500 Todo *selectedTodo(); 501 Todo *selectedTodo();
501 502
502 private: 503 private:
503 QDateTime mNextAlarmDateTime; 504 QDateTime mNextAlarmDateTime;
504 bool mViewerCallerIsSearchDialog; 505 bool mViewerCallerIsSearchDialog;
505 bool mBlockShowDates; 506 bool mBlockShowDates;
506 KSyncManager* mSyncManager; 507 KSyncManager* mSyncManager;
507 AlarmDialog * mAlarmDialog; 508 AlarmDialog * mAlarmDialog;
508 QString mAlarmNotification; 509 QString mAlarmNotification;
509 QString mSuspendAlarmNotification; 510 QString mSuspendAlarmNotification;
510 QTimer* mSuspendTimer; 511 QTimer* mSuspendTimer;
511 QTimer* mAlarmTimer; 512 QTimer* mAlarmTimer;
512 QTimer* mRecheckAlarmTimer; 513 QTimer* mRecheckAlarmTimer;
513 void computeAlarm( QString ); 514 void computeAlarm( QString );
514 void startAlarm( QString, QString ); 515 void startAlarm( QString, QString );
515 void setSyncEventsReadOnly(); 516 void setSyncEventsReadOnly();
516 517
517 QDateTime loadedFileVersion; 518 QDateTime loadedFileVersion;
518 void checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ); 519 void checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete );
519 void checkExternalId( Incidence * inc ); 520 void checkExternalId( Incidence * inc );
520 int mGlobalSyncMode; 521 int mGlobalSyncMode;
521 QString mCurrentSyncDevice; 522 QString mCurrentSyncDevice;
522 QString mCurrentSyncName; 523 QString mCurrentSyncName;
523 KOBeamPrefs* beamDialog; 524 KOBeamPrefs* beamDialog;
524 void init(); 525 void init();
525 int mDatePickerMode; 526 int mDatePickerMode;
526 bool mFlagEditDescription; 527 bool mFlagEditDescription;
527 QDateTime mLastCalendarSync; 528 QDateTime mLastCalendarSync;
528 void createPrinter(); 529 void createPrinter();
529 530
530 void calendarModified( bool, Calendar * ); 531 void calendarModified( bool, Calendar * );
531 532
532 CalPrinter *mCalPrinter; 533 CalPrinter *mCalPrinter;
533 534
534 QSplitter *mPanner; 535 QSplitter *mPanner;
535 QSplitter *mLeftSplitter; 536 QSplitter *mLeftSplitter;
536 KDGanttMinimizeSplitter *mLeftFrame, *mMainFrame; 537 KDGanttMinimizeSplitter *mLeftFrame, *mMainFrame;
537 QWidgetStack *mRightFrame; 538 QWidgetStack *mRightFrame;
538 539
539 KDatePicker* mDatePicker; 540 KDatePicker* mDatePicker;
540 QVBox* mDateFrame; 541 QVBox* mDateFrame;
541 542
542 DateNavigatorContainer *mDateNavigator; // widget showing small month view. 543 DateNavigatorContainer *mDateNavigator; // widget showing small month view.
543 544
544 KOFilterView *mFilterView; 545 KOFilterView *mFilterView;
545 546
546 ResourceView *mResourceView; 547 ResourceView *mResourceView;
547 548
548 // calendar object for this viewing instance 549 // calendar object for this viewing instance
549 Calendar *mCalendar; 550 Calendar *mCalendar;
550 551
551 CalendarResourceManager *mResourceManager; 552 CalendarResourceManager *mResourceManager;
552 553
553 FileStorage *mStorage; 554 FileStorage *mStorage;
554 555
555 DateNavigator *mNavigator; 556 DateNavigator *mNavigator;
556 557
557 KOViewManager *mViewManager; 558 KOViewManager *mViewManager;
558 KODialogManager *mDialogManager; 559 KODialogManager *mDialogManager;
559 560
560 // Calendar filters 561 // Calendar filters
561 QPtrList<CalFilter> mFilters; 562 QPtrList<CalFilter> mFilters;
562 563
563 // various housekeeping variables. 564 // various housekeeping variables.
564 bool mModified; // flag indicating if calendar is modified 565 bool mModified; // flag indicating if calendar is modified
565 bool mReadOnly; // flag indicating if calendar is read-only 566 bool mReadOnly; // flag indicating if calendar is read-only
566 QDate mSaveSingleDate; 567 QDate mSaveSingleDate;
567 568
568 Incidence *mSelectedIncidence; 569 Incidence *mSelectedIncidence;
569 Incidence *mMoveIncidence; 570 Incidence *mMoveIncidence;
570 QDate mMoveIncidenceOldDate; 571 QDate mMoveIncidenceOldDate;
571 KOTodoView *mTodoList; 572 KOTodoView *mTodoList;
572 KOEventEditor * mEventEditor; 573 KOEventEditor * mEventEditor;
573 KOTodoEditor * mTodoEditor; 574 KOTodoEditor * mTodoEditor;
574 KOEventViewerDialog * mEventViewerDialog; 575 KOEventViewerDialog * mEventViewerDialog;
575 void keyPressEvent ( QKeyEvent *e) ; 576 void keyPressEvent ( QKeyEvent *e) ;
576 //QMap<Incidence*,KOIncidenceEditor*> mDialogList; 577 //QMap<Incidence*,KOIncidenceEditor*> mDialogList;
577}; 578};
578 579
579 580
580class CalendarViewVisitor : public Incidence::Visitor 581class CalendarViewVisitor : public Incidence::Visitor
581{ 582{
582 public: 583 public:
583 CalendarViewVisitor() : mView( 0 ) {} 584 CalendarViewVisitor() : mView( 0 ) {}
584 585
585 bool act( Incidence *incidence, CalendarView *view ) 586 bool act( Incidence *incidence, CalendarView *view )
586 { 587 {
587 mView = view; 588 mView = view;
588 return incidence->accept( *this ); 589 return incidence->accept( *this );
589 } 590 }
590 591
591 protected: 592 protected:
592 CalendarView *mView; 593 CalendarView *mView;
593}; 594};
594 595
595class ShowIncidenceVisitor : public CalendarViewVisitor 596class ShowIncidenceVisitor : public CalendarViewVisitor
596{ 597{
597 protected: 598 protected:
598 bool visit( Event *event ) { mView->showEvent( event ); return true; } 599 bool visit( Event *event ) { mView->showEvent( event ); return true; }
599 bool visit( Todo *todo ) { mView->showTodo( todo ); return true; } 600 bool visit( Todo *todo ) { mView->showTodo( todo ); return true; }
600 bool visit( Journal * j ) { mView->showJournal( j );return true; } 601 bool visit( Journal * j ) { mView->showJournal( j );return true; }
601}; 602};
602 603
603class EditIncidenceVisitor : public CalendarViewVisitor 604class EditIncidenceVisitor : public CalendarViewVisitor
604{ 605{
605 protected: 606 protected:
606 bool visit( Event *event ) { mView->editEvent( event ); return true; } 607 bool visit( Event *event ) { mView->editEvent( event ); return true; }
607 bool visit( Todo *todo ) { mView->editTodo( todo ); return true; } 608 bool visit( Todo *todo ) { mView->editTodo( todo ); return true; }
608 bool visit( Journal *j ) { mView->editJournal( j); return true; } 609 bool visit( Journal *j ) { mView->editJournal( j); return true; }
609}; 610};
610 611
611class DeleteIncidenceVisitor : public CalendarViewVisitor 612class DeleteIncidenceVisitor : public CalendarViewVisitor
612{ 613{
613 protected: 614 protected:
614 bool visit( Event *event ) { mView->deleteEvent( event ); return true; } 615 bool visit( Event *event ) { mView->deleteEvent( event ); return true; }
615 bool visit( Todo *todo ) { mView->deleteTodo( todo ); return true; } 616 bool visit( Todo *todo ) { mView->deleteTodo( todo ); return true; }
616 bool visit( Journal * j) {mView->deleteJournal( j ); return true; } 617 bool visit( Journal * j) {mView->deleteJournal( j ); return true; }
617}; 618};
618 619
619#endif 620#endif
diff --git a/korganizer/koeventviewer.cpp b/korganizer/koeventviewer.cpp
index 1508638..445fc86 100644
--- a/korganizer/koeventviewer.cpp
+++ b/korganizer/koeventviewer.cpp
@@ -1,721 +1,750 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18*/ 18*/
19 19
20#include <qcstring.h> 20#include <qcstring.h>
21#include <qwhatsthis.h> 21#include <qwhatsthis.h>
22#include <qdialog.h> 22#include <qdialog.h>
23#include <qapplication.h> 23#include <qapplication.h>
24#include <qlabel.h> 24#include <qlabel.h>
25#include <qlayout.h> 25#include <qlayout.h>
26 26
27#include <klocale.h> 27#include <klocale.h>
28#include <kapplication.h> 28#include <kapplication.h>
29#include <libkcal/event.h> 29#include <libkcal/event.h>
30#include <libkcal/todo.h> 30#include <libkcal/todo.h>
31#include <kdebug.h> 31#include <kdebug.h>
32#include <kiconloader.h> 32#include <kiconloader.h>
33#include <krun.h> 33#include <krun.h>
34#include <kglobal.h> 34#include <kglobal.h>
35#include <kprocess.h> 35#include <kprocess.h>
36#include "koprefs.h" 36#include "koprefs.h"
37 37
38#include <kabc/stdaddressbook.h> 38#include <kabc/stdaddressbook.h>
39 39
40#ifndef KORG_NODCOP 40#ifndef KORG_NODCOP
41#include <dcopclient.h> 41#include <dcopclient.h>
42#include "korganizer.h" 42#include "korganizer.h"
43#include "koprefs.h" 43#include "koprefs.h"
44#include "actionmanager.h" 44#include "actionmanager.h"
45#endif 45#endif
46 46
47#include "koeventviewer.h" 47#include "koeventviewer.h"
48//#ifndef KORG_NOKABC 48//#ifndef KORG_NOKABC
49//#include <kabc/stdaddressbook.h> 49//#include <kabc/stdaddressbook.h>
50//#define size count 50//#define size count
51//#endif 51//#endif
52 52
53#ifdef DESKTOP_VERSION 53#ifdef DESKTOP_VERSION
54#include <kabc/addresseedialog.h> 54#include <kabc/addresseedialog.h>
55#include <kabc/addresseeview.h> 55#include <kabc/addresseeview.h>
56#include <qprinter.h>
57#include <qpainter.h>
58#include <qpaintdevicemetrics.h>
56#else //DESKTOP_VERSION 59#else //DESKTOP_VERSION
57#include <externalapphandler.h> 60#include <externalapphandler.h>
58#include <qtopia/qcopenvelope_qws.h> 61#include <qtopia/qcopenvelope_qws.h>
59#endif //DESKTOP_VERSION 62#endif //DESKTOP_VERSION
60 63
61KOEventViewer::KOEventViewer(QWidget *parent,const char *name) 64KOEventViewer::KOEventViewer(QWidget *parent,const char *name)
62 : QTextBrowser(parent,name) 65 : QTextBrowser(parent,name)
63{ 66{
64 mSyncMode = false; 67 mSyncMode = false;
65 mColorMode = 0; 68 mColorMode = 0;
66} 69}
67 70
68KOEventViewer::~KOEventViewer() 71KOEventViewer::~KOEventViewer()
69{ 72{
70} 73}
71 74
75void KOEventViewer::printMe()
76{
77#ifdef DESKTOP_VERSION
78 QPrinter printer;
79 if (!printer.setup() )
80 return;
81 QPainter p;
82 p.begin ( &printer );
83 QPaintDeviceMetrics m = QPaintDeviceMetrics ( &printer );
84 float dx, dy;
85 int wid = (m.width() * 9)/10;
86 dx = (float) wid/(float)contentsWidth ();
87 dy = (float)(m.height()) / (float)contentsHeight ();
88 float scale;
89 // scale to fit the width or height of the paper
90 if ( dx < dy )
91 scale = dx;
92 else
93 scale = dy;
94 p.translate( m.width()/10,0 );
95 p.scale( scale, scale );
96 drawContents ( &p, 0,0, contentsWidth (), contentsHeight () );
97 p.end();
98#endif
99
100}
72void KOEventViewer::setSource(const QString& n) 101void KOEventViewer::setSource(const QString& n)
73{ 102{
74 103
75 if ( n.left(3) == "uid" ) 104 if ( n.left(3) == "uid" )
76#ifdef DESKTOP_VERSION 105#ifdef DESKTOP_VERSION
77 { 106 {
78 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true ); 107 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true );
79 KABC::AddressBook::Iterator it; 108 KABC::AddressBook::Iterator it;
80 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 109 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
81 // LR I do not understand, why the uid string is different on zaurus and desktop 110 // LR I do not understand, why the uid string is different on zaurus and desktop
82 QString uid = "uid://"+(*it).uid(); 111 QString uid = "uid://"+(*it).uid();
83 112
84 //qDebug("for *%s* +%s+ ", n.latin1(), uid.latin1()); 113 //qDebug("for *%s* +%s+ ", n.latin1(), uid.latin1());
85 if (n == uid ) { 114 if (n == uid ) {
86 //qDebug("found %s ",(*it).mobileHomePhone().latin1() ); 115 //qDebug("found %s ",(*it).mobileHomePhone().latin1() );
87 QDialog dia( this,"dia123", true ); 116 QDialog dia( this,"dia123", true );
88 dia.setCaption( i18n("Details of attendee") ); 117 dia.setCaption( i18n("Details of attendee") );
89 QVBoxLayout lay ( &dia ); 118 QVBoxLayout lay ( &dia );
90 KABC::AddresseeView av ( &dia ); 119 KABC::AddresseeView av ( &dia );
91 av.setAddressee( (*it) ); 120 av.setAddressee( (*it) );
92 lay.addWidget( &av ); 121 lay.addWidget( &av );
93 if ( QApplication::desktop()->width() < 480 ) 122 if ( QApplication::desktop()->width() < 480 )
94 dia.resize( 220, 240); 123 dia.resize( 220, 240);
95 else { 124 else {
96 dia.resize( 400,400); 125 dia.resize( 400,400);
97 } 126 }
98 dia.exec(); 127 dia.exec();
99 break; 128 break;
100 } 129 }
101 } 130 }
102 return; 131 return;
103 } 132 }
104#else 133#else
105 { 134 {
106 if ( "uid:organizer" == n ) { 135 if ( "uid:organizer" == n ) {
107 ExternalAppHandler::instance()->requestDetailsFromKAPI("", mCurrentIncidence->organizer(),""); 136 ExternalAppHandler::instance()->requestDetailsFromKAPI("", mCurrentIncidence->organizer(),"");
108 return; 137 return;
109 } 138 }
110 QPtrList<Attendee> attendees = mCurrentIncidence->attendees(); 139 QPtrList<Attendee> attendees = mCurrentIncidence->attendees();
111 if (attendees.count()) { 140 if (attendees.count()) {
112 Attendee *a; 141 Attendee *a;
113 for(a=attendees.first();a;a=attendees.next()) { 142 for(a=attendees.first();a;a=attendees.next()) {
114 if ( "uid:"+a->uid() == n ) { 143 if ( "uid:"+a->uid() == n ) {
115 bool res = ExternalAppHandler::instance()->requestDetailsFromKAPI(a->name(), a->email(), a->uid()); 144 bool res = ExternalAppHandler::instance()->requestDetailsFromKAPI(a->name(), a->email(), a->uid());
116 return; 145 return;
117 } 146 }
118 } 147 }
119 } 148 }
120 return; 149 return;
121 } 150 }
122 //requestNameEmailUidListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/); 151 //requestNameEmailUidListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/);
123 // the result should now arrive through method insertAttendees 152 // the result should now arrive through method insertAttendees
124 //QString uid = "uid:"+(*it).uid(); 153 //QString uid = "uid:"+(*it).uid();
125#endif 154#endif
126 if ( n.left(6) == "mailto" ) { 155 if ( n.left(6) == "mailto" ) {
127 // qDebug("KOEventViewer::setSource %s ", n.mid(7).latin1()); 156 // qDebug("KOEventViewer::setSource %s ", n.mid(7).latin1());
128#ifndef DESKTOP_VERSION 157#ifndef DESKTOP_VERSION
129 if ( n.mid(7,3) == "ALL" ) { 158 if ( n.mid(7,3) == "ALL" ) {
130 qDebug("all "); 159 qDebug("all ");
131 mailToAttendees( true ); 160 mailToAttendees( true );
132 } else if ( n.mid(7,4) == "RSVP" ) { 161 } else if ( n.mid(7,4) == "RSVP" ) {
133 mailToAttendees( false ); 162 mailToAttendees( false );
134 qDebug("rsvp "); 163 qDebug("rsvp ");
135 } else { 164 } else {
136 QCopEnvelope e("QPE/Application/ompi", "newMail(QString)" ); 165 QCopEnvelope e("QPE/Application/ompi", "newMail(QString)" );
137 e << n.mid(7); 166 e << n.mid(7);
138 } 167 }
139#endif 168#endif
140 169
141 } 170 }
142 171
143 172
144#ifndef KORG_NODCOP 173#ifndef KORG_NODCOP
145 kdDebug() << "KOEventViewer::setSource(): " << n << endl; 174 kdDebug() << "KOEventViewer::setSource(): " << n << endl;
146 QString tmpStr; 175 QString tmpStr;
147 if (n.startsWith("mailto:")) { 176 if (n.startsWith("mailto:")) {
148 KApplication::kApplication()->invokeMailer(n.mid(7),QString::null); 177 KApplication::kApplication()->invokeMailer(n.mid(7),QString::null);
149 //emit showIncidence(n); 178 //emit showIncidence(n);
150 return; 179 return;
151 } else if (n.startsWith("uid:")) { 180 } else if (n.startsWith("uid:")) {
152 DCOPClient *client = KApplication::kApplication()->dcopClient(); 181 DCOPClient *client = KApplication::kApplication()->dcopClient();
153 const QByteArray noParamData; 182 const QByteArray noParamData;
154 const QByteArray paramData; 183 const QByteArray paramData;
155 QByteArray replyData; 184 QByteArray replyData;
156 QCString replyTypeStr; 185 QCString replyTypeStr;
157#define PING_ABBROWSER (client->call("kaddressbook", "KAddressBookIface", "interfaces()", noParamData, replyTypeStr, replyData)) 186#define PING_ABBROWSER (client->call("kaddressbook", "KAddressBookIface", "interfaces()", noParamData, replyTypeStr, replyData))
158 bool foundAbbrowser = PING_ABBROWSER; 187 bool foundAbbrowser = PING_ABBROWSER;
159 188
160 if (foundAbbrowser) { 189 if (foundAbbrowser) {
161 //KAddressbook is already running, so just DCOP to it to bring up the contact editor 190 //KAddressbook is already running, so just DCOP to it to bring up the contact editor
162 //client->send("kaddressbook","KAddressBookIface", 191 //client->send("kaddressbook","KAddressBookIface",
163 QDataStream arg(paramData, IO_WriteOnly); 192 QDataStream arg(paramData, IO_WriteOnly);
164 arg << n.mid(6); 193 arg << n.mid(6);
165 client->send("kaddressbook", "KAddressBookIface", "showContactEditor( QString )", paramData); 194 client->send("kaddressbook", "KAddressBookIface", "showContactEditor( QString )", paramData);
166 return; 195 return;
167 } else { 196 } else {
168 /* 197 /*
169 KaddressBook is not already running. Pass it the UID of the contact via the command line while starting it - its neater. 198 KaddressBook is not already running. Pass it the UID of the contact via the command line while starting it - its neater.
170 We start it without its main interface 199 We start it without its main interface
171 */ 200 */
172 KIconLoader* iconLoader = new KIconLoader(); 201 KIconLoader* iconLoader = new KIconLoader();
173 QString iconPath = iconLoader->iconPath("go",KIcon::Small); 202 QString iconPath = iconLoader->iconPath("go",KIcon::Small);
174 ActionManager::setStartedKAddressBook(true); 203 ActionManager::setStartedKAddressBook(true);
175 tmpStr = "kaddressbook --editor-only --uid "; 204 tmpStr = "kaddressbook --editor-only --uid ";
176 tmpStr += KProcess::quote(n.mid(6)); 205 tmpStr += KProcess::quote(n.mid(6));
177 KRun::runCommand(tmpStr,"KAddressBook",iconPath); 206 KRun::runCommand(tmpStr,"KAddressBook",iconPath);
178 return; 207 return;
179 } 208 }
180 } else { 209 } else {
181 //QTextBrowser::setSource(n); 210 //QTextBrowser::setSource(n);
182 } 211 }
183#endif 212#endif
184} 213}
185void KOEventViewer::mailToAttendees( bool all ) 214void KOEventViewer::mailToAttendees( bool all )
186{ 215{
187 QPtrList<Attendee> attendees = mCurrentIncidence->attendees(); 216 QPtrList<Attendee> attendees = mCurrentIncidence->attendees();
188 if (attendees.count() == 0) return; 217 if (attendees.count() == 0) return;
189 QStringList nameList; 218 QStringList nameList;
190 QStringList emailList; 219 QStringList emailList;
191 QStringList uidList; 220 QStringList uidList;
192 Attendee* a; 221 Attendee* a;
193 for(a=attendees.first();a;a=attendees.next()) { 222 for(a=attendees.first();a;a=attendees.next()) {
194 if ( !all && !a->RSVP() ) continue; 223 if ( !all && !a->RSVP() ) continue;
195 if (!a->email().isEmpty()) { 224 if (!a->email().isEmpty()) {
196 nameList.append (a->name() ); 225 nameList.append (a->name() );
197 emailList.append (a->email() ); 226 emailList.append (a->email() );
198 uidList.append (a->uid() ); 227 uidList.append (a->uid() );
199 } 228 }
200 } 229 }
201 QString uid = "ComposeMailUIpick2"+mMailSubject; 230 QString uid = "ComposeMailUIpick2"+mMailSubject;
202#ifndef DESKTOP_VERSION 231#ifndef DESKTOP_VERSION
203 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI("QPE/Application/ompi", uid, nameList, emailList, uidList); 232 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI("QPE/Application/ompi", uid, nameList, emailList, uidList);
204#endif 233#endif
205 234
206} 235}
207void KOEventViewer::addTag(const QString & tag,const QString & text) 236void KOEventViewer::addTag(const QString & tag,const QString & text)
208{ 237{
209 int number=text.contains("\n"); 238 int number=text.contains("\n");
210 QString str = "<" + tag + ">"; 239 QString str = "<" + tag + ">";
211 QString tmpText=text; 240 QString tmpText=text;
212 QString tmpStr=str; 241 QString tmpStr=str;
213 if(number !=-1) 242 if(number !=-1)
214 { 243 {
215 if (number > 0) { 244 if (number > 0) {
216 int pos=0; 245 int pos=0;
217 QString tmp; 246 QString tmp;
218 for(int i=0;i<=number;i++) { 247 for(int i=0;i<=number;i++) {
219 pos=tmpText.find("\n"); 248 pos=tmpText.find("\n");
220 tmp=tmpText.left(pos); 249 tmp=tmpText.left(pos);
221 tmpText=tmpText.right(tmpText.length()-pos-1); 250 tmpText=tmpText.right(tmpText.length()-pos-1);
222 tmpStr+=tmp+"<br>"; 251 tmpStr+=tmp+"<br>";
223 } 252 }
224 } 253 }
225 else tmpStr += tmpText; 254 else tmpStr += tmpText;
226 tmpStr+="</" + tag + ">"; 255 tmpStr+="</" + tag + ">";
227 mText.append(tmpStr); 256 mText.append(tmpStr);
228 } 257 }
229 else 258 else
230 { 259 {
231 str += text + "</" + tag + ">"; 260 str += text + "</" + tag + ">";
232 mText.append(str); 261 mText.append(str);
233 } 262 }
234} 263}
235 264
236void KOEventViewer::setColorMode( int m ) 265void KOEventViewer::setColorMode( int m )
237{ 266{
238 mColorMode = m; 267 mColorMode = m;
239} 268}
240void KOEventViewer::appendEvent(Event *event, int mode ) 269void KOEventViewer::appendEvent(Event *event, int mode )
241{ 270{
242 mMailSubject = ""; 271 mMailSubject = "";
243 mCurrentIncidence = event; 272 mCurrentIncidence = event;
244 bool shortDate = KOPrefs::instance()->mShortDateInViewer; 273 bool shortDate = KOPrefs::instance()->mShortDateInViewer;
245 topLevelWidget()->setCaption(i18n("Event Viewer")); 274 topLevelWidget()->setCaption(i18n("Event Viewer"));
246 if ( mode == 0 ) { 275 if ( mode == 0 ) {
247 addTag("h2",deTag(event->summary())); 276 addTag("h2",deTag(event->summary()));
248 } 277 }
249 else { 278 else {
250 if ( mColorMode == 1 ) { 279 if ( mColorMode == 1 ) {
251 mText +="<font color=\"#00A000\">"; 280 mText +="<font color=\"#00A000\">";
252 } 281 }
253 if ( mColorMode == 2 ) { 282 if ( mColorMode == 2 ) {
254 mText +="<font color=\"#C00000\">"; 283 mText +="<font color=\"#C00000\">";
255 } 284 }
256 // mText +="<font color=\"#F00000\">" + i18n("O-due!") + "</font>"; 285 // mText +="<font color=\"#F00000\">" + i18n("O-due!") + "</font>";
257 if ( mode == 1 ) { 286 if ( mode == 1 ) {
258 addTag("h2",i18n( "Local: " ) +deTag(event->summary())); 287 addTag("h2",i18n( "Local: " ) +deTag(event->summary()));
259 } else { 288 } else {
260 addTag("h2",i18n( "Remote: " ) +deTag(event->summary())); 289 addTag("h2",i18n( "Remote: " ) +deTag(event->summary()));
261 } 290 }
262 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) ); 291 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) );
263 if ( mColorMode ) 292 if ( mColorMode )
264 mText += "</font>"; 293 mText += "</font>";
265 } 294 }
266 mMailSubject += i18n( "Meeting " )+ event->summary(); 295 mMailSubject += i18n( "Meeting " )+ event->summary();
267 if (event->cancelled ()) { 296 if (event->cancelled ()) {
268 mText +="<font color=\"#B00000\">"; 297 mText +="<font color=\"#B00000\">";
269 addTag("i",i18n("This event has been cancelled!")); 298 addTag("i",i18n("This event has been cancelled!"));
270 mText.append("<br>"); 299 mText.append("<br>");
271 mText += "</font>"; 300 mText += "</font>";
272 mMailSubject += i18n("(cancelled)"); 301 mMailSubject += i18n("(cancelled)");
273 } 302 }
274 if (!event->location().isEmpty()) { 303 if (!event->location().isEmpty()) {
275 addTag("b",i18n("Location: ")); 304 addTag("b",i18n("Location: "));
276 mText.append(deTag(event->location())+"<br>"); 305 mText.append(deTag(event->location())+"<br>");
277 mMailSubject += i18n(" at ") + event->location(); 306 mMailSubject += i18n(" at ") + event->location();
278 } 307 }
279 if (event->doesFloat()) { 308 if (event->doesFloat()) {
280 if (event->isMultiDay()) { 309 if (event->isMultiDay()) {
281 mText.append(i18n("<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>") 310 mText.append(i18n("<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>")
282 .arg(event->dtStartDateStr(shortDate)) 311 .arg(event->dtStartDateStr(shortDate))
283 .arg(event->dtEndDateStr(shortDate))); 312 .arg(event->dtEndDateStr(shortDate)));
284 } else { 313 } else {
285 mText.append(i18n("<p><b>On:</b> %1</p>").arg(event->dtStartDateStr( shortDate ))); 314 mText.append(i18n("<p><b>On:</b> %1</p>").arg(event->dtStartDateStr( shortDate )));
286 } 315 }
287 } else { 316 } else {
288 if (event->isMultiDay()) { 317 if (event->isMultiDay()) {
289 mText.append(i18n("<p><b>From:</b> %1</p> ") 318 mText.append(i18n("<p><b>From:</b> %1</p> ")
290 .arg(event->dtStartStr( shortDate))); 319 .arg(event->dtStartStr( shortDate)));
291 mText.append(i18n("<p><b>To:</b> %1</p>") 320 mText.append(i18n("<p><b>To:</b> %1</p>")
292 .arg(event->dtEndStr(shortDate))); 321 .arg(event->dtEndStr(shortDate)));
293 } else { 322 } else {
294 mText.append(i18n("<p><b>On:</b> %1</p> ") 323 mText.append(i18n("<p><b>On:</b> %1</p> ")
295 .arg(event->dtStartDateStr( shortDate ))); 324 .arg(event->dtStartDateStr( shortDate )));
296 mText.append(i18n("<p><b>From:</b> %1 <b>To:</b> %2</p>") 325 mText.append(i18n("<p><b>From:</b> %1 <b>To:</b> %2</p>")
297 .arg(event->dtStartTimeStr()) 326 .arg(event->dtStartTimeStr())
298 .arg(event->dtEndTimeStr())); 327 .arg(event->dtEndTimeStr()));
299 } 328 }
300 } 329 }
301 330
302 if (event->recurrence()->doesRecur()) { 331 if (event->recurrence()->doesRecur()) {
303 332
304 QString recurText = event->recurrence()->recurrenceText(); 333 QString recurText = event->recurrence()->recurrenceText();
305 addTag("p","<em>" + i18n("This is a %1 recurring event.").arg(recurText ) + "</em>"); 334 addTag("p","<em>" + i18n("This is a %1 recurring event.").arg(recurText ) + "</em>");
306 bool ok; 335 bool ok;
307 QDate start = QDate::currentDate(); 336 QDate start = QDate::currentDate();
308 QDateTime next; 337 QDateTime next;
309 next = event->getNextOccurence( QDateTime::currentDateTime() , &ok ); 338 next = event->getNextOccurence( QDateTime::currentDateTime() , &ok );
310 if ( ok ) { 339 if ( ok ) {
311 addTag("p",i18n("<b>Next recurrence is on:</b>") ); 340 addTag("p",i18n("<b>Next recurrence is on:</b>") );
312 addTag("p", KGlobal::locale()->formatDate( next.date(), shortDate )); 341 addTag("p", KGlobal::locale()->formatDate( next.date(), shortDate ));
313 mMailSubject += i18n(" - " )+ KGlobal::locale()->formatDateTime( next, true ); 342 mMailSubject += i18n(" - " )+ KGlobal::locale()->formatDateTime( next, true );
314 343
315 } else { 344 } else {
316 bool last; 345 bool last;
317 QDate nextd; 346 QDate nextd;
318 nextd = event->recurrence()->getPreviousDate( QDate::currentDate() , &last ); 347 nextd = event->recurrence()->getPreviousDate( QDate::currentDate() , &last );
319 if ( last ) { 348 if ( last ) {
320 addTag("p",i18n("<b>Last recurrence was on:</b>") ); 349 addTag("p",i18n("<b>Last recurrence was on:</b>") );
321 addTag("p", KGlobal::locale()->formatDate( nextd, shortDate )); 350 addTag("p", KGlobal::locale()->formatDate( nextd, shortDate ));
322 } 351 }
323 } 352 }
324 } else { 353 } else {
325 mMailSubject += i18n(" - " )+event->dtStartStr( true ); 354 mMailSubject += i18n(" - " )+event->dtStartStr( true );
326 355
327 } 356 }
328 357
329 358
330 if (event->isAlarmEnabled()) { 359 if (event->isAlarmEnabled()) {
331 Alarm *alarm =event->alarms().first() ; 360 Alarm *alarm =event->alarms().first() ;
332 QDateTime t = alarm->time(); 361 QDateTime t = alarm->time();
333 int min = t.secsTo( event->dtStart() )/60; 362 int min = t.secsTo( event->dtStart() )/60;
334 QString s =i18n("( %1 min before )").arg( min ); 363 QString s =i18n("( %1 min before )").arg( min );
335 addTag("p",i18n("<b>Alarm on: ") + s +" </b>"); 364 addTag("p",i18n("<b>Alarm on: ") + s +" </b>");
336 addTag("p", KGlobal::locale()->formatDateTime( t, shortDate )); 365 addTag("p", KGlobal::locale()->formatDateTime( t, shortDate ));
337 //addTag("p",s); 366 //addTag("p",s);
338 } 367 }
339 368
340 addTag("b",i18n("Access: ")); 369 addTag("b",i18n("Access: "));
341 mText.append(event->secrecyStr()+"<br>"); 370 mText.append(event->secrecyStr()+"<br>");
342 371
343 372
344 if ( KOPrefs::instance()->mEVshowDetails ) { 373 if ( KOPrefs::instance()->mEVshowDetails ) {
345 if (!event->description().isEmpty()) { 374 if (!event->description().isEmpty()) {
346 addTag("p",i18n("<b>Details: </b>")); 375 addTag("p",i18n("<b>Details: </b>"));
347 addTag("p",deTag(event->description())); 376 addTag("p",deTag(event->description()));
348 } 377 }
349 } 378 }
350 formatCategories(event); 379 formatCategories(event);
351 380
352 formatReadOnly(event); 381 formatReadOnly(event);
353 formatAttendees(event); 382 formatAttendees(event);
354 383
355 if ( KOPrefs::instance()->mEVshowCreated ) { 384 if ( KOPrefs::instance()->mEVshowCreated ) {
356 addTag("p",i18n("<b>Created: ") +" </b>"); 385 addTag("p",i18n("<b>Created: ") +" </b>");
357 addTag("p", KGlobal::locale()->formatDateTime( event->created(), shortDate )); 386 addTag("p", KGlobal::locale()->formatDateTime( event->created(), shortDate ));
358 387
359 } 388 }
360 if ( KOPrefs::instance()->mEVshowChanged ) { 389 if ( KOPrefs::instance()->mEVshowChanged ) {
361 addTag("p",i18n("<b>Last modified: ") +" </b>"); 390 addTag("p",i18n("<b>Last modified: ") +" </b>");
362 addTag("p", KGlobal::locale()->formatDateTime( event->lastModified(), shortDate )); 391 addTag("p", KGlobal::locale()->formatDateTime( event->lastModified(), shortDate ));
363 392
364 } 393 }
365 setText(mText); 394 setText(mText);
366 //QWhatsThis::add(this,mText); 395 //QWhatsThis::add(this,mText);
367 396
368} 397}
369 398
370void KOEventViewer::appendTodo(Todo *event, int mode ) 399void KOEventViewer::appendTodo(Todo *event, int mode )
371{ 400{
372 mMailSubject = ""; 401 mMailSubject = "";
373 mCurrentIncidence = event; 402 mCurrentIncidence = event;
374 topLevelWidget()->setCaption(i18n("Todo Viewer")); 403 topLevelWidget()->setCaption(i18n("Todo Viewer"));
375 bool shortDate = KOPrefs::instance()->mShortDateInViewer; 404 bool shortDate = KOPrefs::instance()->mShortDateInViewer;
376 if (mode == 0 ) 405 if (mode == 0 )
377 addTag("h2",deTag(event->summary())); 406 addTag("h2",deTag(event->summary()));
378 else { 407 else {
379 if ( mColorMode == 1 ) { 408 if ( mColorMode == 1 ) {
380 mText +="<font color=\"#00A000\">"; 409 mText +="<font color=\"#00A000\">";
381 } 410 }
382 if ( mColorMode == 2 ) { 411 if ( mColorMode == 2 ) {
383 mText +="<font color=\"#B00000\">"; 412 mText +="<font color=\"#B00000\">";
384 } 413 }
385 if ( mode == 1 ) { 414 if ( mode == 1 ) {
386 addTag("h2",i18n( "Local: " ) +deTag(event->summary())); 415 addTag("h2",i18n( "Local: " ) +deTag(event->summary()));
387 } else { 416 } else {
388 addTag("h2",i18n( "Remote: " ) +deTag(event->summary())); 417 addTag("h2",i18n( "Remote: " ) +deTag(event->summary()));
389 } 418 }
390 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) ); 419 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) );
391 if ( mColorMode ) 420 if ( mColorMode )
392 mText += "</font>"; 421 mText += "</font>";
393 } 422 }
394 mMailSubject += i18n( "Todo " )+ event->summary(); 423 mMailSubject += i18n( "Todo " )+ event->summary();
395 424
396 if ( event->percentComplete() == 100 && event->hasCompletedDate() ) { 425 if ( event->percentComplete() == 100 && event->hasCompletedDate() ) {
397 mText +="<font color=\"#B00000\">"; 426 mText +="<font color=\"#B00000\">";
398 addTag("i", i18n("<p><i>Completed on %1</i></p>").arg( event->completedStr(KOPrefs::instance()->mShortDateInViewer) ) ); 427 addTag("i", i18n("<p><i>Completed on %1</i></p>").arg( event->completedStr(KOPrefs::instance()->mShortDateInViewer) ) );
399 mText += "</font>"; 428 mText += "</font>";
400 } else { 429 } else {
401 mText.append(i18n("<p><i>%1 % completed</i></p>") 430 mText.append(i18n("<p><i>%1 % completed</i></p>")
402 .arg(event->percentComplete())); 431 .arg(event->percentComplete()));
403 } 432 }
404 433
405 if (event->cancelled ()) { 434 if (event->cancelled ()) {
406 mText +="<font color=\"#B00000\">"; 435 mText +="<font color=\"#B00000\">";
407 addTag("i",i18n("This todo has been cancelled!")); 436 addTag("i",i18n("This todo has been cancelled!"));
408 mText.append("<br>"); 437 mText.append("<br>");
409 mText += "</font>"; 438 mText += "</font>";
410 mMailSubject += i18n("(cancelled)"); 439 mMailSubject += i18n("(cancelled)");
411 } 440 }
412 441
413 if (!event->location().isEmpty()) { 442 if (!event->location().isEmpty()) {
414 addTag("b",i18n("Location: ")); 443 addTag("b",i18n("Location: "));
415 mText.append(deTag(event->location())+"<br>"); 444 mText.append(deTag(event->location())+"<br>");
416 mMailSubject += i18n(" at ") + event->location(); 445 mMailSubject += i18n(" at ") + event->location();
417 } 446 }
418 447
419 if (event->recurrence()->doesRecur()) { 448 if (event->recurrence()->doesRecur()) {
420 449
421 QString recurText = event->recurrence()->recurrenceText(); 450 QString recurText = event->recurrence()->recurrenceText();
422 addTag("p","<em>" + i18n("This is a %1 recurring todo.").arg(recurText ) + "</em>"); 451 addTag("p","<em>" + i18n("This is a %1 recurring todo.").arg(recurText ) + "</em>");
423 452
424 } 453 }
425 if (event->hasStartDate()) { 454 if (event->hasStartDate()) {
426 mText.append(i18n("<p><b>Start on:</b> %1</p>").arg(event->dtStartStr(KOPrefs::instance()->mShortDateInViewer))); 455 mText.append(i18n("<p><b>Start on:</b> %1</p>").arg(event->dtStartStr(KOPrefs::instance()->mShortDateInViewer)));
427 } 456 }
428 if (event->hasDueDate()) { 457 if (event->hasDueDate()) {
429 mText.append(i18n("<p><b>Due on:</b> %1</p>").arg(event->dtDueStr(KOPrefs::instance()->mShortDateInViewer))); 458 mText.append(i18n("<p><b>Due on:</b> %1</p>").arg(event->dtDueStr(KOPrefs::instance()->mShortDateInViewer)));
430 mMailSubject += i18n(" - " )+event->dtDueStr( true ); 459 mMailSubject += i18n(" - " )+event->dtDueStr( true );
431 } 460 }
432 addTag("b",i18n("Access: ")); 461 addTag("b",i18n("Access: "));
433 mText.append(event->secrecyStr()+"<br>"); 462 mText.append(event->secrecyStr()+"<br>");
434 if ( KOPrefs::instance()->mEVshowDetails ) { 463 if ( KOPrefs::instance()->mEVshowDetails ) {
435 if (!event->description().isEmpty()) { 464 if (!event->description().isEmpty()) {
436 addTag("p",i18n("<b>Details: </b>")); 465 addTag("p",i18n("<b>Details: </b>"));
437 addTag("p",deTag(event->description())); 466 addTag("p",deTag(event->description()));
438 } 467 }
439 } 468 }
440 469
441 formatCategories(event); 470 formatCategories(event);
442 471
443 mText.append(i18n("<p><b>Priority:</b> %2</p>") 472 mText.append(i18n("<p><b>Priority:</b> %2</p>")
444 .arg(QString::number(event->priority()))); 473 .arg(QString::number(event->priority())));
445 474
446 formatReadOnly(event); 475 formatReadOnly(event);
447 formatAttendees(event); 476 formatAttendees(event);
448 if ( event->relatedTo() ) { 477 if ( event->relatedTo() ) {
449 addTag("b",i18n("Parent todo:<br>")); 478 addTag("b",i18n("Parent todo:<br>"));
450 mText.append(deTag(event->relatedTo()->summary())+" [" +QString::number(event->relatedTo()->priority()) + "/" + QString::number(((Todo*)event->relatedTo())->percentComplete())+"%] <br>"); 479 mText.append(deTag(event->relatedTo()->summary())+" [" +QString::number(event->relatedTo()->priority()) + "/" + QString::number(((Todo*)event->relatedTo())->percentComplete())+"%] <br>");
451 } 480 }
452 QPtrList<Incidence> Relations = event->relations(); 481 QPtrList<Incidence> Relations = event->relations();
453 Incidence *to; 482 Incidence *to;
454 if ( Relations.first() ) 483 if ( Relations.first() )
455 addTag("b",i18n("Sub todos:<br>")); 484 addTag("b",i18n("Sub todos:<br>"));
456 for (to=Relations.first();to;to=Relations.next()) { 485 for (to=Relations.first();to;to=Relations.next()) {
457 mText.append( deTag(to->summary())+" [" +QString::number(to->priority()) + "/" + QString::number(((Todo*)to)->percentComplete())+"%]<br>"); 486 mText.append( deTag(to->summary())+" [" +QString::number(to->priority()) + "/" + QString::number(((Todo*)to)->percentComplete())+"%]<br>");
458 487
459 } 488 }
460 if ( KOPrefs::instance()->mEVshowCreated ) { 489 if ( KOPrefs::instance()->mEVshowCreated ) {
461 addTag("p",i18n("<b>Created: ") +" </b>"); 490 addTag("p",i18n("<b>Created: ") +" </b>");
462 addTag("p", KGlobal::locale()->formatDateTime( event->created(), shortDate )); 491 addTag("p", KGlobal::locale()->formatDateTime( event->created(), shortDate ));
463 492
464 } 493 }
465 if ( KOPrefs::instance()->mEVshowChanged ) { 494 if ( KOPrefs::instance()->mEVshowChanged ) {
466 addTag("p",i18n("<b>Last modified: ") +" </b>"); 495 addTag("p",i18n("<b>Last modified: ") +" </b>");
467 addTag("p", KGlobal::locale()->formatDateTime( event->lastModified(), shortDate )); 496 addTag("p", KGlobal::locale()->formatDateTime( event->lastModified(), shortDate ));
468 497
469 } 498 }
470 setText(mText); 499 setText(mText);
471} 500}
472 501
473void KOEventViewer::formatCategories(Incidence *event) 502void KOEventViewer::formatCategories(Incidence *event)
474{ 503{
475 if (!event->categoriesStr().isEmpty()) { 504 if (!event->categoriesStr().isEmpty()) {
476 if (event->categories().count() == 1) { 505 if (event->categories().count() == 1) {
477 addTag("h3",i18n("Category")); 506 addTag("h3",i18n("Category"));
478 } else { 507 } else {
479 addTag("h3",i18n("Categories")); 508 addTag("h3",i18n("Categories"));
480 } 509 }
481 addTag("p",event->categoriesStr()); 510 addTag("p",event->categoriesStr());
482 } 511 }
483} 512}
484void KOEventViewer::formatAttendees(Incidence *event) 513void KOEventViewer::formatAttendees(Incidence *event)
485{ 514{
486 QPtrList<Attendee> attendees = event->attendees(); 515 QPtrList<Attendee> attendees = event->attendees();
487 if (attendees.count()) { 516 if (attendees.count()) {
488 517
489 518
490 QString iconPath = KGlobal::iconLoader()->iconPath("mailappt",KIcon::Small); 519 QString iconPath = KGlobal::iconLoader()->iconPath("mailappt",KIcon::Small);
491 QString NOiconPath = KGlobal::iconLoader()->iconPath("nomailappt",KIcon::Small); 520 QString NOiconPath = KGlobal::iconLoader()->iconPath("nomailappt",KIcon::Small);
492 addTag("h3",i18n("Organizer")); 521 addTag("h3",i18n("Organizer"));
493 mText.append("<ul><li>"); 522 mText.append("<ul><li>");
494#ifndef KORG_NOKABC 523#ifndef KORG_NOKABC
495 524
496#ifdef DESKTOP_VERSION 525#ifdef DESKTOP_VERSION
497 KABC::AddressBook *add_book = KABC::StdAddressBook::self(); 526 KABC::AddressBook *add_book = KABC::StdAddressBook::self();
498 KABC::Addressee::List addressList; 527 KABC::Addressee::List addressList;
499 addressList = add_book->findByEmail(event->organizer()); 528 addressList = add_book->findByEmail(event->organizer());
500 KABC::Addressee o = addressList.first(); 529 KABC::Addressee o = addressList.first();
501 if (!o.isEmpty() && addressList.size()<2) { 530 if (!o.isEmpty() && addressList.size()<2) {
502 mText += "<a href=\"uid:" + o.uid() + "\">"; 531 mText += "<a href=\"uid:" + o.uid() + "\">";
503 mText += o.formattedName(); 532 mText += o.formattedName();
504 mText += "</a>\n"; 533 mText += "</a>\n";
505 } else { 534 } else {
506 mText.append(event->organizer()); 535 mText.append(event->organizer());
507 } 536 }
508#else //DESKTOP_VERSION 537#else //DESKTOP_VERSION
509 mText += "<a href=\"uid:organizer\">"; 538 mText += "<a href=\"uid:organizer\">";
510 mText += event->organizer(); 539 mText += event->organizer();
511 mText += "</a>\n"; 540 mText += "</a>\n";
512#endif //DESKTOP_VERSION 541#endif //DESKTOP_VERSION
513 542
514 543
515#else 544#else
516 mText.append(event->organizer()); 545 mText.append(event->organizer());
517#endif 546#endif
518 547
519 if (iconPath) { 548 if (iconPath) {
520 mText += " <a href=\"mailto:" + event->organizer() + "\">"; 549 mText += " <a href=\"mailto:" + event->organizer() + "\">";
521 mText += "<IMG src=\"" + iconPath + "\">"; 550 mText += "<IMG src=\"" + iconPath + "\">";
522 mText += "</a>\n"; 551 mText += "</a>\n";
523 } 552 }
524 mText.append("</li></ul>"); 553 mText.append("</li></ul>");
525 554
526 addTag("h3",i18n("Attendees")); 555 addTag("h3",i18n("Attendees"));
527 Attendee *a; 556 Attendee *a;
528 mText.append("<ul>"); 557 mText.append("<ul>");
529 int a_count = 0; 558 int a_count = 0;
530 int a_count_nr = 0; 559 int a_count_nr = 0;
531 560
532 for(a=attendees.first();a;a=attendees.next()) { 561 for(a=attendees.first();a;a=attendees.next()) {
533#ifndef KORG_NOKABC 562#ifndef KORG_NOKABC
534#ifdef DESKTOP_VERSION 563#ifdef DESKTOP_VERSION
535 if (a->name().isEmpty()) { 564 if (a->name().isEmpty()) {
536 addressList = add_book->findByEmail(a->email()); 565 addressList = add_book->findByEmail(a->email());
537 KABC::Addressee o = addressList.first(); 566 KABC::Addressee o = addressList.first();
538 if (!o.isEmpty() && addressList.size()<2) { 567 if (!o.isEmpty() && addressList.size()<2) {
539 mText += "<a href=\"uid:" + o.uid() + "\">"; 568 mText += "<a href=\"uid:" + o.uid() + "\">";
540 mText += o.formattedName(); 569 mText += o.formattedName();
541 mText += "</a>\n"; 570 mText += "</a>\n";
542 } else { 571 } else {
543 mText += "<li>"; 572 mText += "<li>";
544 mText.append(a->email()); 573 mText.append(a->email());
545 mText += "\n"; 574 mText += "\n";
546 } 575 }
547 } else { 576 } else {
548 mText += "<li><a href=\"uid:" + a->uid() + "\">"; 577 mText += "<li><a href=\"uid:" + a->uid() + "\">";
549 if (!a->name().isEmpty()) mText += a->name(); 578 if (!a->name().isEmpty()) mText += a->name();
550 else mText += a->email(); 579 else mText += a->email();
551 mText += "</a>\n"; 580 mText += "</a>\n";
552 } 581 }
553#else //DESKTOP_VERSION 582#else //DESKTOP_VERSION
554 mText += "<li><a href=\"uid:" + a->uid() + "\">"; 583 mText += "<li><a href=\"uid:" + a->uid() + "\">";
555 if (!a->name().isEmpty()) mText += a->name(); 584 if (!a->name().isEmpty()) mText += a->name();
556 else mText += a->email(); 585 else mText += a->email();
557 mText += "</a>\n"; 586 mText += "</a>\n";
558#endif //DESKTOP_VERSION 587#endif //DESKTOP_VERSION
559#else 588#else
560 //qDebug("nokabc "); 589 //qDebug("nokabc ");
561 mText += "<li><a href=\"uid:" + a->uid() + "\">"; 590 mText += "<li><a href=\"uid:" + a->uid() + "\">";
562 if (!a->name().isEmpty()) mText += a->name(); 591 if (!a->name().isEmpty()) mText += a->name();
563 else mText += a->email(); 592 else mText += a->email();
564 mText += "</a>\n"; 593 mText += "</a>\n";
565#endif 594#endif
566 595
567 596
568 if (!a->email().isEmpty()) { 597 if (!a->email().isEmpty()) {
569 if (iconPath) { 598 if (iconPath) {
570 mText += "<a href=\"mailto:" + a->name() +" <" + a->email() + ">:" + mMailSubject + "\">"; 599 mText += "<a href=\"mailto:" + a->name() +" <" + a->email() + ">:" + mMailSubject + "\">";
571 if ( a->RSVP() ) { 600 if ( a->RSVP() ) {
572 ++a_count_nr; 601 ++a_count_nr;
573 mText += "<IMG src=\"" + iconPath + "\">"; 602 mText += "<IMG src=\"" + iconPath + "\">";
574 } 603 }
575 else { 604 else {
576 ++a_count; 605 ++a_count;
577 mText += "<IMG src=\"" + NOiconPath + "\">"; 606 mText += "<IMG src=\"" + NOiconPath + "\">";
578 } 607 }
579 mText += "</a>\n"; 608 mText += "</a>\n";
580 } 609 }
581 } 610 }
582 if (a->status() != Attendee::NeedsAction ) 611 if (a->status() != Attendee::NeedsAction )
583 mText +="[" + a->statusStr() + "] "; 612 mText +="[" + a->statusStr() + "] ";
584 if (a->role() == Attendee::Chair ) 613 if (a->role() == Attendee::Chair )
585 mText +="(" + a->roleStr().left(1) + ".)"; 614 mText +="(" + a->roleStr().left(1) + ".)";
586 } 615 }
587 mText.append("</li></ul>"); 616 mText.append("</li></ul>");
588 if ( (a_count+a_count_nr) > 1 ) { 617 if ( (a_count+a_count_nr) > 1 ) {
589 mText += "<a href=\"mailto:ALL\">"; 618 mText += "<a href=\"mailto:ALL\">";
590 mText += i18n( "Mail to all" ); 619 mText += i18n( "Mail to all" );
591 mText += "</a> ( "; 620 mText += "</a> ( ";
592 mText += "<IMG src=\"" + iconPath + "\">"; 621 mText += "<IMG src=\"" + iconPath + "\">";
593 mText += i18n( " and " ); 622 mText += i18n( " and " );
594 mText += "<IMG src=\"" + NOiconPath + "\"> )"; 623 mText += "<IMG src=\"" + NOiconPath + "\"> )";
595 mText += "<br>\n"; 624 mText += "<br>\n";
596 625
597 626
598 } 627 }
599 if ( a_count_nr > 1 ) { 628 if ( a_count_nr > 1 ) {
600 mText += "<a href=\"mailto:RSVP\">"; 629 mText += "<a href=\"mailto:RSVP\">";
601 mText += i18n( "Mail to selected" ); 630 mText += i18n( "Mail to selected" );
602 mText += "</a> ( "; 631 mText += "</a> ( ";
603 mText += i18n( "<IMG src=\"%1\"> only )").arg ( iconPath ); 632 mText += i18n( "<IMG src=\"%1\"> only )").arg ( iconPath );
604 mText += "<br>\n"; 633 mText += "<br>\n";
605 } 634 }
606 } 635 }
607 636
608} 637}
609void KOEventViewer::appendJournal(Journal *jour, int mode ) 638void KOEventViewer::appendJournal(Journal *jour, int mode )
610{ 639{
611 bool shortDate = KOPrefs::instance()->mShortDateInViewer; 640 bool shortDate = KOPrefs::instance()->mShortDateInViewer;
612 if (mode == 0 ) { 641 if (mode == 0 ) {
613 addTag("h2",i18n("Journal from: ")); 642 addTag("h2",i18n("Journal from: "));
614 } 643 }
615 else { 644 else {
616 if ( mode == 1 ) { 645 if ( mode == 1 ) {
617 addTag("h2",i18n( "Local: " ) +i18n("Journal from: ")); 646 addTag("h2",i18n( "Local: " ) +i18n("Journal from: "));
618 } else { 647 } else {
619 addTag("h2",i18n( "Remote: " ) +i18n("Journal from: ")); 648 addTag("h2",i18n( "Remote: " ) +i18n("Journal from: "));
620 } 649 }
621 } 650 }
622 topLevelWidget()->setCaption("Journal Viewer"); 651 topLevelWidget()->setCaption("Journal Viewer");
623 mText.append(i18n("<h3> %1 </h3> ").arg(jour->dtStartDateStr(KOPrefs::instance()->mShortDateInViewer))); 652 mText.append(i18n("<h3> %1 </h3> ").arg(jour->dtStartDateStr(KOPrefs::instance()->mShortDateInViewer)));
624 addTag("b",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(jour->lastModified(),shortDate ) ); 653 addTag("b",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(jour->lastModified(),shortDate ) );
625 if (!jour->description().isEmpty()) { 654 if (!jour->description().isEmpty()) {
626 addTag("p",deTag(jour->description())); 655 addTag("p",deTag(jour->description()));
627 } 656 }
628 setText(mText); 657 setText(mText);
629} 658}
630 659
631void KOEventViewer::formatReadOnly(Incidence *event) 660void KOEventViewer::formatReadOnly(Incidence *event)
632{ 661{
633 if (event->isReadOnly()) { 662 if (event->isReadOnly()) {
634 addTag("p","<em>(" + i18n("read-only") + ")</em>"); 663 addTag("p","<em>(" + i18n("read-only") + ")</em>");
635 } 664 }
636} 665}
637void KOEventViewer::setSyncMode( bool b ) 666void KOEventViewer::setSyncMode( bool b )
638{ 667{
639 mSyncMode = b; 668 mSyncMode = b;
640} 669}
641 670
642void KOEventViewer::setTodo(Todo *event, bool clearV ) 671void KOEventViewer::setTodo(Todo *event, bool clearV )
643{ 672{
644 if ( clearV ) 673 if ( clearV )
645 clearEvents(); 674 clearEvents();
646 if ( mSyncMode ) { 675 if ( mSyncMode ) {
647 if ( clearV ) 676 if ( clearV )
648 appendTodo(event,1 ); 677 appendTodo(event,1 );
649 else 678 else
650 appendTodo(event,2); 679 appendTodo(event,2);
651 } else 680 } else
652 appendTodo(event); 681 appendTodo(event);
653} 682}
654void KOEventViewer::setJournal(Journal *event, bool clearV ) 683void KOEventViewer::setJournal(Journal *event, bool clearV )
655{ 684{
656 if ( clearV ) 685 if ( clearV )
657 clearEvents(); 686 clearEvents();
658 if ( mSyncMode ) { 687 if ( mSyncMode ) {
659 if ( clearV ) 688 if ( clearV )
660 appendJournal(event, 1); 689 appendJournal(event, 1);
661 else 690 else
662 appendJournal(event, 2); 691 appendJournal(event, 2);
663 } else 692 } else
664 appendJournal(event); 693 appendJournal(event);
665} 694}
666 695
667void KOEventViewer::setEvent(Event *event) 696void KOEventViewer::setEvent(Event *event)
668{ 697{
669 clearEvents(); 698 clearEvents();
670 if ( mSyncMode ) 699 if ( mSyncMode )
671 appendEvent(event, 1); 700 appendEvent(event, 1);
672 else 701 else
673 appendEvent(event); 702 appendEvent(event);
674} 703}
675 704
676void KOEventViewer::addEvent(Event *event) 705void KOEventViewer::addEvent(Event *event)
677{ 706{
678 if ( mSyncMode ) 707 if ( mSyncMode )
679 appendEvent(event, 2); 708 appendEvent(event, 2);
680 else 709 else
681 appendEvent(event); 710 appendEvent(event);
682} 711}
683 712
684void KOEventViewer::clearEvents(bool now) 713void KOEventViewer::clearEvents(bool now)
685{ 714{
686 mText = ""; 715 mText = "";
687 if (now) setText(mText); 716 if (now) setText(mText);
688} 717}
689 718
690void KOEventViewer::addText(QString text) 719void KOEventViewer::addText(QString text)
691{ 720{
692 mText.append(text); 721 mText.append(text);
693 setText(mText); 722 setText(mText);
694} 723}
695QString KOEventViewer::deTag(QString text) 724QString KOEventViewer::deTag(QString text)
696{ 725{
697#if QT_VERSION >= 0x030000 726#if QT_VERSION >= 0x030000
698 text.replace( '<' , "&lt;" ); 727 text.replace( '<' , "&lt;" );
699 text.replace( '>' , "&gt;" ); 728 text.replace( '>' , "&gt;" );
700#else 729#else
701 if ( text.find ('<') >= 0 ) { 730 if ( text.find ('<') >= 0 ) {
702 text.replace( QRegExp("<") , "&lt;" ); 731 text.replace( QRegExp("<") , "&lt;" );
703 } 732 }
704 if ( text.find ('>') >= 0 ) { 733 if ( text.find ('>') >= 0 ) {
705 text.replace( QRegExp(">") , "&gt;" ); 734 text.replace( QRegExp(">") , "&gt;" );
706 } 735 }
707#endif 736#endif
708 return text; 737 return text;
709} 738}
710void KOEventViewer::keyPressEvent ( QKeyEvent * e ) 739void KOEventViewer::keyPressEvent ( QKeyEvent * e )
711{ 740{
712 switch ( e->key() ) { 741 switch ( e->key() ) {
713 case Qt::Key_Return: 742 case Qt::Key_Return:
714 case Qt::Key_Enter : 743 case Qt::Key_Enter :
715 e->ignore(); 744 e->ignore();
716 break; 745 break;
717 default: 746 default:
718 QTextBrowser::keyPressEvent ( e ); 747 QTextBrowser::keyPressEvent ( e );
719 break; 748 break;
720 } 749 }
721} 750}
diff --git a/korganizer/koeventviewer.h b/korganizer/koeventviewer.h
index 47cc5e9..ca5bc15 100644
--- a/korganizer/koeventviewer.h
+++ b/korganizer/koeventviewer.h
@@ -1,77 +1,78 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18*/ 18*/
19#ifndef KOEVENTVIEWER_H 19#ifndef KOEVENTVIEWER_H
20#define KOEVENTVIEWER_H 20#define KOEVENTVIEWER_H
21// 21//
22// Viewer widget for events. 22// Viewer widget for events.
23// 23//
24 24
25#include <qtextbrowser.h> 25#include <qtextbrowser.h>
26 26
27#include <libkcal/event.h> 27#include <libkcal/event.h>
28#include <libkcal/journal.h> 28#include <libkcal/journal.h>
29 29
30 30
31using namespace KCal; 31using namespace KCal;
32 32
33class KOEventViewer : public QTextBrowser { 33class KOEventViewer : public QTextBrowser {
34 Q_OBJECT 34 Q_OBJECT
35 public: 35 public:
36 KOEventViewer(QWidget *parent=0,const char *name=0); 36 KOEventViewer(QWidget *parent=0,const char *name=0);
37 virtual ~KOEventViewer(); 37 virtual ~KOEventViewer();
38 38
39 void setSource(const QString &); 39 void setSource(const QString &);
40 void setEvent(Event *event); 40 void setEvent(Event *event);
41 void addEvent(Event *event); 41 void addEvent(Event *event);
42 void setTodo(Todo *event, bool clearV = true ); 42 void setTodo(Todo *event, bool clearV = true );
43 void setJournal(Journal *jour, bool clearV = true ); 43 void setJournal(Journal *jour, bool clearV = true );
44 44
45 void appendEvent(Event *event, int mode = 0 ); 45 void appendEvent(Event *event, int mode = 0 );
46 void appendTodo(Todo *event, int mode = 0 ); 46 void appendTodo(Todo *event, int mode = 0 );
47 void appendJournal(Journal *jour, int mode = 0 ); 47 void appendJournal(Journal *jour, int mode = 0 );
48 48
49 void clearEvents(bool now=false); 49 void clearEvents(bool now=false);
50 50
51 void addText(QString text); 51 void addText(QString text);
52 void setSyncMode( bool ); 52 void setSyncMode( bool );
53 void setColorMode( int ); 53 void setColorMode( int );
54 void mailToAttendees( bool all ); 54 void mailToAttendees( bool all );
55 void printMe();
55 56
56 protected: 57 protected:
57 int mColorMode; 58 int mColorMode;
58 void addTag(const QString & tag,const QString & text); 59 void addTag(const QString & tag,const QString & text);
59 60
60 void formatCategories(Incidence *event); 61 void formatCategories(Incidence *event);
61 void formatAttendees(Incidence *event); 62 void formatAttendees(Incidence *event);
62 void formatReadOnly(Incidence *event); 63 void formatReadOnly(Incidence *event);
63 void keyPressEvent ( QKeyEvent * e ); 64 void keyPressEvent ( QKeyEvent * e );
64 65
65 private: 66 private:
66 QTextBrowser *mEventTextView; 67 QTextBrowser *mEventTextView;
67 bool mSyncMode; 68 bool mSyncMode;
68 QString deTag(QString text); 69 QString deTag(QString text);
69 70
70 QString mText; 71 QString mText;
71 QString mMailSubject; 72 QString mMailSubject;
72 Incidence* mCurrentIncidence; 73 Incidence* mCurrentIncidence;
73 signals: 74 signals:
74 void launchaddressbook(QString uid); 75 void launchaddressbook(QString uid);
75}; 76};
76 77
77#endif 78#endif
diff --git a/korganizer/koeventviewerdialog.cpp b/korganizer/koeventviewerdialog.cpp
index f734696..ec55cca 100644
--- a/korganizer/koeventviewerdialog.cpp
+++ b/korganizer/koeventviewerdialog.cpp
@@ -1,302 +1,316 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18*/ 18*/
19 19
20#include <klocale.h> 20#include <klocale.h>
21 21
22#include <libkcal/event.h> 22#include <libkcal/event.h>
23#include <qtimer.h> 23#include <qtimer.h>
24#include <qpushbutton.h> 24#include <qpushbutton.h>
25 25
26#include "koeventviewer.h" 26#include "koeventviewer.h"
27#include <kmessagebox.h>
27#include "koprefs.h" 28#include "koprefs.h"
28#include <libkcal/todo.h> 29#include <libkcal/todo.h>
29#include "qapp.h" 30#include "qapp.h"
30 31
31#include "koeventviewerdialog.h" 32#include "koeventviewerdialog.h"
32extern int globalFlagBlockAgenda; 33extern int globalFlagBlockAgenda;
33 34
34KOEventViewerDialog::KOEventViewerDialog(QWidget *parent,const char *name) 35KOEventViewerDialog::KOEventViewerDialog(QWidget *parent,const char *name)
35 : KDialogBase(parent,name, 36 : KDialogBase(parent,name,
36#ifndef DESKTOP_VERSION 37#ifndef DESKTOP_VERSION
37 true , 38 true ,
38#else 39#else
39 false, 40 false,
40#endif 41#endif
41 i18n("Event Viewer"),Ok|User1|Close,Close, false, i18n("Agenda")) 42 i18n("Event Viewer"),Ok|User1|Close,Close, false, i18n("Agenda"))
42{ 43{
43 sendSignalViewerClosed = true; 44 sendSignalViewerClosed = true;
44 mEventViewer = new KOEventViewer(this); 45 mEventViewer = new KOEventViewer(this);
45 mEventViewer->setFont( KOPrefs::instance()->mEventViewFont ); 46 mEventViewer->setFont( KOPrefs::instance()->mEventViewFont );
46 setMainWidget(mEventViewer); 47 setMainWidget(mEventViewer);
47 setButtonText(Ok, i18n("Edit") ); 48 setButtonText(Ok, i18n("Edit") );
48 49
49 QObject::connect(findButton( Ok ),SIGNAL(clicked()), 50 QObject::connect(findButton( Ok ),SIGNAL(clicked()),
50 SLOT(editIncidence())); 51 SLOT(editIncidence()));
51 QObject::connect(this,SIGNAL(user1Clicked()), 52 QObject::connect(this,SIGNAL(user1Clicked()),
52 SLOT(showIncidence())); 53 SLOT(showIncidence()));
53 mIncidence = 0; 54 mIncidence = 0;
54 // TODO: Set a sensible size (based on the content?). 55 // TODO: Set a sensible size (based on the content?).
55 //showMaximized(); 56 //showMaximized();
56 //qDebug("++++++++++++KOEventViewerDialog() "); 57 //qDebug("++++++++++++KOEventViewerDialog() ");
57 // if ( KOPrefs::instance()->mCompactDialogs ) { 58 // if ( KOPrefs::instance()->mCompactDialogs ) {
58// setFixedSize( 240,284 ); 59// setFixedSize( 240,284 );
59// move( 0, 15 ); 60// move( 0, 15 );
60// } else { 61// } else {
61// setMinimumSize(300,200); 62// setMinimumSize(300,200);
62// resize(320,300); 63// resize(320,300);
63// } 64// }
64 mSyncMode = false; 65 mSyncMode = false;
65 mSyncResult = 0; 66 mSyncResult = 0;
66 67
67} 68}
68 69
69KOEventViewerDialog::~KOEventViewerDialog() 70KOEventViewerDialog::~KOEventViewerDialog()
70{ 71{
71 //qDebug("-------~KOEventViewerDialog() "); 72 //qDebug("-------~KOEventViewerDialog() ");
72} 73}
73void KOEventViewerDialog::showMe() 74void KOEventViewerDialog::showMe()
74{ 75{
75 76
76#ifdef DESKTOP_VERSION 77#ifdef DESKTOP_VERSION
77 int x,y,w,h; 78 int x,y,w,h;
78 x = geometry().x(); 79 x = geometry().x();
79 y = geometry().y(); 80 y = geometry().y();
80 w = width(); 81 w = width();
81 h = height(); 82 h = height();
82 show(); 83 show();
83 setGeometry(x,y,w,h); 84 setGeometry(x,y,w,h);
84#else 85#else
85 showMaximized(); 86 showMaximized();
86#endif 87#endif
87 raise(); 88 raise();
88 setActiveWindow(); 89 setActiveWindow();
89 mEventViewer->setFocus(); 90 mEventViewer->setFocus();
90 //raise(); 91 //raise();
91 92
92} 93}
94void KOEventViewerDialog::print()
95{
96 qDebug("PRINT ");
97 int km = KMessageBox::warningContinueCancel(this,mIncidence->summary().left(35) +
98 i18n("\n\nDo you really want to print this item?"),
99 i18n("KO/Pi Print Confirmation"),i18n("Print"));
100 if ( km != KMessageBox::Continue ) {
101 qDebug("cancel ");
102 return;
103 }
104 mEventViewer->printMe();
105
106}
93void KOEventViewerDialog::setSyncMode( bool b ) 107void KOEventViewerDialog::setSyncMode( bool b )
94{ 108{
95 mSyncMode = b; 109 mSyncMode = b;
96 //qDebug("KOEventViewerDialog::setSyncMode %d ",mSyncMode ); 110 //qDebug("KOEventViewerDialog::setSyncMode %d ",mSyncMode );
97 if ( mSyncMode ) { 111 if ( mSyncMode ) {
98 findButton( Close )->setText( i18n("Cancel Sync")); 112 findButton( Close )->setText( i18n("Cancel Sync"));
99 findButton( Ok )->setText( i18n("Remote")); 113 findButton( Ok )->setText( i18n("Remote"));
100 findButton( User1 )->setText( i18n("Local")); 114 findButton( User1 )->setText( i18n("Local"));
101 } else { 115 } else {
102 findButton( Close )->setText( i18n("Close")); 116 findButton( Close )->setText( i18n("Close"));
103 findButton( Ok )->setText( i18n("Edit")); 117 findButton( Ok )->setText( i18n("Edit"));
104 findButton( User1 )->setText( i18n("Agenda")); 118 findButton( User1 )->setText( i18n("Agenda"));
105 } 119 }
106 mEventViewer->setSyncMode( b ); 120 mEventViewer->setSyncMode( b );
107} 121}
108void KOEventViewerDialog::setColorMode( int m ) 122void KOEventViewerDialog::setColorMode( int m )
109{ 123{
110 mEventViewer->setColorMode( m ); 124 mEventViewer->setColorMode( m );
111} 125}
112int KOEventViewerDialog::executeS( bool local ) 126int KOEventViewerDialog::executeS( bool local )
113{ 127{
114 mSyncResult = 3; 128 mSyncResult = 3;
115 if ( local ) 129 if ( local )
116 findButton( User1 )->setFocus(); 130 findButton( User1 )->setFocus();
117 else 131 else
118 findButton( Ok )->setFocus(); 132 findButton( Ok )->setFocus();
119 exec(); 133 exec();
120 return mSyncResult; 134 return mSyncResult;
121} 135}
122 136
123void KOEventViewerDialog::updateConfig() 137void KOEventViewerDialog::updateConfig()
124{ 138{
125 mEventViewer->setFont( KOPrefs::instance()->mEventViewFont ); 139 mEventViewer->setFont( KOPrefs::instance()->mEventViewFont );
126 140
127} 141}
128void KOEventViewerDialog::setEvent(Event *event) 142void KOEventViewerDialog::setEvent(Event *event)
129{ 143{
130 mEventViewer->setEvent(event); 144 mEventViewer->setEvent(event);
131 mIncidence = event; 145 mIncidence = event;
132 mEventViewer->setFocus(); 146 mEventViewer->setFocus();
133 //findButton( Close )->setFocus(); 147 //findButton( Close )->setFocus();
134 if ( !mSyncMode ) { 148 if ( !mSyncMode ) {
135 findButton( User1 )->setText( i18n("Agenda")); 149 findButton( User1 )->setText( i18n("Agenda"));
136 } 150 }
137} 151}
138void KOEventViewerDialog::setIncidence(Incidence *in ) 152void KOEventViewerDialog::setIncidence(Incidence *in )
139{ 153{
140 if ( in->type() == "Event" ) 154 if ( in->type() == "Event" )
141 setEvent( (Event*) in ); 155 setEvent( (Event*) in );
142 else if ( in->type() =="Todo" ) 156 else if ( in->type() =="Todo" )
143 setTodo( (Todo*) in ); 157 setTodo( (Todo*) in );
144 else if ( in->type() =="Journal" ) 158 else if ( in->type() =="Journal" )
145 setJournal( (Journal*) in ); 159 setJournal( (Journal*) in );
146} 160}
147void KOEventViewerDialog::addIncidence(Incidence *in) 161void KOEventViewerDialog::addIncidence(Incidence *in)
148{ 162{
149 if ( in->type() == "Event" ) 163 if ( in->type() == "Event" )
150 addEvent( (Event*) in ); 164 addEvent( (Event*) in );
151 else if ( in->type() =="Todo" ) 165 else if ( in->type() =="Todo" )
152 mEventViewer->setTodo( (Todo*) in, false ); 166 mEventViewer->setTodo( (Todo*) in, false );
153 else if ( in->type() =="Journal" ) 167 else if ( in->type() =="Journal" )
154 mEventViewer->setJournal( (Journal*) in, false ); 168 mEventViewer->setJournal( (Journal*) in, false );
155 if ( mSyncMode ) { 169 if ( mSyncMode ) {
156 findButton( User1 )->setFocus(); 170 findButton( User1 )->setFocus();
157 setCaption(i18n("Conflict! Please choose entry")); 171 setCaption(i18n("Conflict! Please choose entry"));
158 } 172 }
159} 173}
160 174
161void KOEventViewerDialog::addEvent(Event *event) 175void KOEventViewerDialog::addEvent(Event *event)
162{ 176{
163 mEventViewer->addEvent(event); 177 mEventViewer->addEvent(event);
164 mIncidence = event; 178 mIncidence = event;
165 mEventViewer->setFocus(); 179 mEventViewer->setFocus();
166 //findButton( Close )->setFocus(); 180 //findButton( Close )->setFocus();
167 if ( !mSyncMode ) { 181 if ( !mSyncMode ) {
168 findButton( User1 )->setText( i18n("Agenda")); 182 findButton( User1 )->setText( i18n("Agenda"));
169 } 183 }
170} 184}
171 185
172void KOEventViewerDialog::setTodo(Todo *event) 186void KOEventViewerDialog::setTodo(Todo *event)
173{ 187{
174 mEventViewer->setTodo(event); 188 mEventViewer->setTodo(event);
175 mIncidence = (Incidence*)event; 189 mIncidence = (Incidence*)event;
176 mEventViewer->setFocus(); 190 mEventViewer->setFocus();
177 //findButton( Close )->setFocus(); 191 //findButton( Close )->setFocus();
178 if ( !mSyncMode ) { 192 if ( !mSyncMode ) {
179 findButton( User1 )->setText( i18n("Set complete")); 193 findButton( User1 )->setText( i18n("Set complete"));
180 } 194 }
181} 195}
182void KOEventViewerDialog::setJournal(Journal *j) 196void KOEventViewerDialog::setJournal(Journal *j)
183{ 197{
184 mEventViewer->setJournal(j); 198 mEventViewer->setJournal(j);
185 mIncidence = (Incidence*)j; 199 mIncidence = (Incidence*)j;
186 mEventViewer->setFocus(); 200 mEventViewer->setFocus();
187 //findButton( Close )->setFocus(); 201 //findButton( Close )->setFocus();
188 if ( !mSyncMode ) { 202 if ( !mSyncMode ) {
189 findButton( User1 )->setText( i18n("Agenda")); 203 findButton( User1 )->setText( i18n("Agenda"));
190 } 204 }
191} 205}
192 206
193void KOEventViewerDialog::addText(QString text) 207void KOEventViewerDialog::addText(QString text)
194{ 208{
195 mEventViewer->addText(text); 209 mEventViewer->addText(text);
196 mEventViewer->setFocus(); 210 mEventViewer->setFocus();
197 //findButton( Close )->setFocus(); 211 //findButton( Close )->setFocus();
198} 212}
199void KOEventViewerDialog::editIncidence() 213void KOEventViewerDialog::editIncidence()
200{ 214{
201 sendSignalViewerClosed = false; 215 sendSignalViewerClosed = false;
202 if ( mSyncMode ) { 216 if ( mSyncMode ) {
203 mSyncResult = 2; 217 mSyncResult = 2;
204 accept(); 218 accept();
205 return; 219 return;
206 } 220 }
207 if ( mIncidence ){ 221 if ( mIncidence ){
208#ifndef DESKTOP_VERSION 222#ifndef DESKTOP_VERSION
209 hide(); 223 hide();
210#endif 224#endif
211 emit editIncidence( mIncidence ); 225 emit editIncidence( mIncidence );
212 } 226 }
213} 227}
214void KOEventViewerDialog::showIncidence() 228void KOEventViewerDialog::showIncidence()
215{ 229{
216 sendSignalViewerClosed = false; 230 sendSignalViewerClosed = false;
217 if ( mSyncMode ) { 231 if ( mSyncMode ) {
218 mSyncResult = 1; 232 mSyncResult = 1;
219 accept(); 233 accept();
220 return; 234 return;
221 } 235 }
222 236
223 if ( mIncidence ){ 237 if ( mIncidence ){
224#ifndef DESKTOP_VERSION 238#ifndef DESKTOP_VERSION
225 hide(); 239 hide();
226#endif 240#endif
227 QDate date; 241 QDate date;
228 if ( mIncidence->type() == "Todo" ) { 242 if ( mIncidence->type() == "Todo" ) {
229 /* 243 /*
230 if ( ((Todo*)mIncidence)->hasDueDate() ) 244 if ( ((Todo*)mIncidence)->hasDueDate() )
231 date = ((Todo*)mIncidence)->dtDue().date(); 245 date = ((Todo*)mIncidence)->dtDue().date();
232 else { 246 else {
233 globalFlagBlockAgenda = 2; 247 globalFlagBlockAgenda = 2;
234 emit showAgendaView( false ); 248 emit showAgendaView( false );
235 return; 249 return;
236 } 250 }
237 */ 251 */
238 ((Todo*)mIncidence)->setCompleted( true ); 252 ((Todo*)mIncidence)->setCompleted( true );
239 ((Todo*)mIncidence)->setCompleted(QDateTime::currentDateTime() ); 253 ((Todo*)mIncidence)->setCompleted(QDateTime::currentDateTime() );
240 hide(); 254 hide();
241 emit todoCompleted(((Todo*)mIncidence)); 255 emit todoCompleted(((Todo*)mIncidence));
242 return; 256 return;
243 257
244 } else 258 } else
245 date = mIncidence->dtStart().date(); 259 date = mIncidence->dtStart().date();
246 globalFlagBlockAgenda = 1; 260 globalFlagBlockAgenda = 1;
247 emit showAgendaView( false ); 261 emit showAgendaView( false );
248 globalFlagBlockAgenda = 2; 262 globalFlagBlockAgenda = 2;
249 emit jumpToTime( date ); 263 emit jumpToTime( date );
250 } 264 }
251} 265}
252void KOEventViewerDialog::keyPressEvent ( QKeyEvent * e ) 266void KOEventViewerDialog::keyPressEvent ( QKeyEvent * e )
253{ 267{
254 switch ( e->key() ) { 268 switch ( e->key() ) {
255 269
256 case Qt::Key_A : 270 case Qt::Key_A :
257 case Qt::Key_L : 271 case Qt::Key_L :
258 showIncidence(); 272 showIncidence();
259 break; 273 break;
260 case Qt::Key_E : 274 case Qt::Key_E :
261 case Qt::Key_R : 275 case Qt::Key_R :
262 editIncidence(); 276 editIncidence();
263 break; 277 break;
264 case Qt::Key_C: 278 case Qt::Key_C:
265 case Qt::Key_Escape: 279 case Qt::Key_Escape:
266 sendSignalViewerClosed = true; 280 sendSignalViewerClosed = true;
267 close(); 281 close();
268 break; 282 break;
269 case Qt::Key_I: 283 case Qt::Key_I:
270#ifndef DESKTOP_VERSION 284#ifndef DESKTOP_VERSION
271 sendSignalViewerClosed = true; 285 sendSignalViewerClosed = true;
272 close(); 286 close();
273#else 287#else
274 sendSignalViewerClosed = true; 288 sendSignalViewerClosed = true;
275 slotViewerClosed(); 289 slotViewerClosed();
276 //accept(); 290 //accept();
277#endif 291#endif
278 break; 292 break;
279 default: 293 default:
280 KDialogBase::keyPressEvent ( e ); 294 KDialogBase::keyPressEvent ( e );
281 break; 295 break;
282 } 296 }
283 297
284} 298}
285void KOEventViewerDialog::hideEvent ( QHideEvent * e ) 299void KOEventViewerDialog::hideEvent ( QHideEvent * e )
286{ 300{
287 KDialogBase::hideEvent ( e ); 301 KDialogBase::hideEvent ( e );
288 QTimer::singleShot( 1, this, SLOT (slotViewerClosed() ) ); 302 QTimer::singleShot( 1, this, SLOT (slotViewerClosed() ) );
289} 303}
290 304
291void KOEventViewerDialog::slotViewerClosed() 305void KOEventViewerDialog::slotViewerClosed()
292{ 306{
293 if ( mSyncMode ) 307 if ( mSyncMode )
294 return; 308 return;
295 309
296 if ( sendSignalViewerClosed ) { 310 if ( sendSignalViewerClosed ) {
297 //qDebug("KOEventViewerDialog::hideEvent "); 311 //qDebug("KOEventViewerDialog::hideEvent ");
298 emit signalViewerClosed(); 312 emit signalViewerClosed();
299 } 313 }
300 sendSignalViewerClosed = true; 314 sendSignalViewerClosed = true;
301} 315}
302 316
diff --git a/korganizer/koeventviewerdialog.h b/korganizer/koeventviewerdialog.h
index 36431ad..8e1cd44 100644
--- a/korganizer/koeventviewerdialog.h
+++ b/korganizer/koeventviewerdialog.h
@@ -1,75 +1,76 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000, 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000, 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18*/ 18*/
19#ifndef KOEVENTVIEWERDIALOG_H 19#ifndef KOEVENTVIEWERDIALOG_H
20#define KOEVENTVIEWERDIALOG_H 20#define KOEVENTVIEWERDIALOG_H
21// 21//
22// Viewer dialog for events. 22// Viewer dialog for events.
23// 23//
24 24
25#include <qtextview.h> 25#include <qtextview.h>
26 26
27#include <kdialogbase.h> 27#include <kdialogbase.h>
28 28
29#include <libkcal/event.h> 29#include <libkcal/event.h>
30 30
31using namespace KCal; 31using namespace KCal;
32 32
33class KOEventViewer; 33class KOEventViewer;
34 34
35class KOEventViewerDialog : public KDialogBase { 35class KOEventViewerDialog : public KDialogBase {
36 Q_OBJECT 36 Q_OBJECT
37 public: 37 public:
38 KOEventViewerDialog(QWidget *parent=0,const char *name=0); 38 KOEventViewerDialog(QWidget *parent=0,const char *name=0);
39 virtual ~KOEventViewerDialog(); 39 virtual ~KOEventViewerDialog();
40 40
41 void setEvent(Event *event); 41 void setEvent(Event *event);
42 void addEvent(Event *event); 42 void addEvent(Event *event);
43 void setTodo(Todo *event); 43 void setTodo(Todo *event);
44 void setJournal(Journal *journal); 44 void setJournal(Journal *journal);
45 void setIncidence(Incidence *inc); 45 void setIncidence(Incidence *inc);
46 void addIncidence(Incidence *inc); 46 void addIncidence(Incidence *inc);
47 void addText(QString text); 47 void addText(QString text);
48 void showMe(); 48 void showMe();
49 void setSyncMode( bool ); 49 void setSyncMode( bool );
50 void setColorMode( int m ); 50 void setColorMode( int m );
51 int executeS( bool ); 51 int executeS( bool );
52 public slots: 52 public slots:
53 void updateConfig(); 53 void updateConfig();
54 void print();
54 signals: 55 signals:
55 void editIncidence( Incidence* ); 56 void editIncidence( Incidence* );
56 void jumpToTime( const QDate &); 57 void jumpToTime( const QDate &);
57 void showAgendaView( bool ); 58 void showAgendaView( bool );
58 void todoCompleted(Todo*); 59 void todoCompleted(Todo*);
59 void signalViewerClosed(); 60 void signalViewerClosed();
60private slots: 61private slots:
61 void slotViewerClosed(); 62 void slotViewerClosed();
62 void editIncidence(); 63 void editIncidence();
63 void showIncidence(); 64 void showIncidence();
64 protected: 65 protected:
65 void hideEvent ( QHideEvent * e ); 66 void hideEvent ( QHideEvent * e );
66 private: 67 private:
67 bool sendSignalViewerClosed; 68 bool sendSignalViewerClosed;
68 bool mSyncMode; 69 bool mSyncMode;
69 int mSyncResult; 70 int mSyncResult;
70 KOEventViewer *mEventViewer; 71 KOEventViewer *mEventViewer;
71 Incidence* mIncidence; 72 Incidence* mIncidence;
72 void keyPressEvent ( QKeyEvent * e ); 73 void keyPressEvent ( QKeyEvent * e );
73}; 74};
74 75
75#endif 76#endif
diff --git a/korganizer/koviewmanager.cpp b/korganizer/koviewmanager.cpp
index e80b3fc..8752636 100644
--- a/korganizer/koviewmanager.cpp
+++ b/korganizer/koviewmanager.cpp
@@ -1,792 +1,799 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 3
4 Copyright (c) 2001 4 Copyright (c) 2001
5 Cornelius Schumacher <schumacher@kde.org> 5 Cornelius Schumacher <schumacher@kde.org>
6 6
7 This program is free software; you can redistribute it and/or modify 7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by 8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or 9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version. 10 (at your option) any later version.
11 11
12 This program is distributed in the hope that it will be useful, 12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
15 GNU General Public License for more details. 15 GNU General Public License for more details.
16 16
17 You should have received a copy of the GNU General Public License 17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software 18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20 20
21 As a special exception, permission is given to link this program 21 As a special exception, permission is given to link this program
22 with any edition of Qt, and distribute the resulting executable, 22 with any edition of Qt, and distribute the resulting executable,
23 without including the source code for Qt in the source distribution. 23 without including the source code for Qt in the source distribution.
24*/ 24*/
25 25
26#include <qwidgetstack.h> 26#include <qwidgetstack.h>
27 27
28#include <kconfig.h> 28#include <kconfig.h>
29#include <kglobal.h> 29#include <kglobal.h>
30#ifndef DESKTOP_VERSION 30#ifndef DESKTOP_VERSION
31#include <qpe/qpeapplication.h> 31#include <qpe/qpeapplication.h>
32#else 32#else
33#include <qapplication.h> 33#include <qapplication.h>
34#endif 34#endif
35#include <qdatetime.h> 35#include <qdatetime.h>
36#include "calendarview.h" 36#include "calendarview.h"
37#include "datenavigator.h" 37#include "datenavigator.h"
38#include "kotodoview.h" 38#include "kotodoview.h"
39#include "koagendaview.h" 39#include "koagendaview.h"
40#include "kodialogmanager.h" 40#include "kodialogmanager.h"
41#include "komonthview.h" 41#include "komonthview.h"
42#include "kolistview.h" 42#include "kolistview.h"
43#include "kowhatsnextview.h" 43#include "kowhatsnextview.h"
44#include "kojournalview.h" 44#include "kojournalview.h"
45#include "kotimespanview.h" 45#include "kotimespanview.h"
46#include "koprefs.h" 46#include "koprefs.h"
47#include "navigatorbar.h" 47#include "navigatorbar.h"
48#include "kdatenavigator.h" 48#include "kdatenavigator.h"
49 49
50#include "koviewmanager.h" 50#include "koviewmanager.h"
51//extern bool externFlagMonthviewBlockPainting; 51//extern bool externFlagMonthviewBlockPainting;
52 52
53//bool globalFlagBlockPainting = false; 53//bool globalFlagBlockPainting = false;
54int globalFlagBlockAgenda = 0; 54int globalFlagBlockAgenda = 0;
55int globalFlagBlockLabel = 0; 55int globalFlagBlockLabel = 0;
56int globalFlagBlockAgendaItemPaint = 1; 56int globalFlagBlockAgendaItemPaint = 1;
57int globalFlagBlockAgendaItemUpdate = 1; 57int globalFlagBlockAgendaItemUpdate = 1;
58 58
59 59
60KOViewManager::KOViewManager( CalendarView *mainView ) : 60KOViewManager::KOViewManager( CalendarView *mainView ) :
61 QObject(), mMainView( mainView ) 61 QObject(), mMainView( mainView )
62{ 62{
63 mCurrentView = 0; 63 mCurrentView = 0;
64 64
65 mWhatsNextView = 0; 65 mWhatsNextView = 0;
66 mTodoView = 0; 66 mTodoView = 0;
67 mAgendaView = 0; 67 mAgendaView = 0;
68 mMonthView = 0; 68 mMonthView = 0;
69 mListView = 0; 69 mListView = 0;
70 mJournalView = 0; 70 mJournalView = 0;
71 mTimeSpanView = 0; 71 mTimeSpanView = 0;
72 mCurrentAgendaView = 0 ; 72 mCurrentAgendaView = 0 ;
73 mFlagShowNextxDays = false; 73 mFlagShowNextxDays = false;
74} 74}
75 75
76KOViewManager::~KOViewManager() 76KOViewManager::~KOViewManager()
77{ 77{
78} 78}
79 79
80 80
81KOrg::BaseView *KOViewManager::currentView() 81KOrg::BaseView *KOViewManager::currentView()
82{ 82{
83 return mCurrentView; 83 return mCurrentView;
84} 84}
85 85
86void KOViewManager::readSettings(KConfig *config) 86void KOViewManager::readSettings(KConfig *config)
87{ 87{
88 config->setGroup("General"); 88 config->setGroup("General");
89 QString view = config->readEntry("Current View"); 89 QString view = config->readEntry("Current View");
90 if (view == "WhatsNext") showWhatsNextView(); 90 if (view == "WhatsNext") showWhatsNextView();
91 else if (view == "Month") { 91 else if (view == "Month") {
92 if ( !KOPrefs::instance()->mMonthViewWeek ) 92 if ( !KOPrefs::instance()->mMonthViewWeek )
93 showMonthView(); 93 showMonthView();
94 else 94 else
95 showMonthViewWeek(); 95 showMonthViewWeek();
96 } 96 }
97 else if (view == "List") showListView(); 97 else if (view == "List") showListView();
98 else if (view == "Journal") showJournalView(); 98 else if (view == "Journal") showJournalView();
99 else if (view == "TimeSpan") showTimeSpanView(); 99 else if (view == "TimeSpan") showTimeSpanView();
100 else if (view == "Todo") showTodoView(); 100 else if (view == "Todo") showTodoView();
101 else { 101 else {
102 config->setGroup( "Views" ); 102 config->setGroup( "Views" );
103 int dateCount = config->readNumEntry( "ShownDatesCount", 7 ); 103 int dateCount = config->readNumEntry( "ShownDatesCount", 7 );
104 mCurrentAgendaView = dateCount; 104 mCurrentAgendaView = dateCount;
105 showAgendaView(); 105 showAgendaView();
106 mCurrentAgendaView = dateCount; 106 mCurrentAgendaView = dateCount;
107#ifdef DESKTOP_VERSION 107#ifdef DESKTOP_VERSION
108 QTimer::singleShot( 1000, mAgendaView, SLOT ( setInitStartHour() ) ); 108 QTimer::singleShot( 1000, mAgendaView, SLOT ( setInitStartHour() ) );
109#endif 109#endif
110 } 110 }
111} 111}
112 112
113void KOViewManager::showDateView( int view, QDate date) 113void KOViewManager::showDateView( int view, QDate date)
114{ 114{
115 static int lastMode = 0; 115 static int lastMode = 0;
116 static int lastCount = 0; 116 static int lastCount = 0;
117 static bool lastNDMode = false; 117 static bool lastNDMode = false;
118 static QDate lastDate; 118 static QDate lastDate;
119 //qDebug("date %d %s", view, date.toString().latin1()); 119 //qDebug("date %d %s", view, date.toString().latin1());
120 120
121 if (view != 9) 121 if (view != 9)
122 lastMode = 0; 122 lastMode = 0;
123 //qDebug("%d %d ", lastNDMode, mFlagShowNextxDays ); 123 //qDebug("%d %d ", lastNDMode, mFlagShowNextxDays );
124 bool savemFlagShowNextxDays = mFlagShowNextxDays; 124 bool savemFlagShowNextxDays = mFlagShowNextxDays;
125 mFlagShowNextxDays = false; 125 mFlagShowNextxDays = false;
126 if ( view == 3 ) { 126 if ( view == 3 ) {
127 //mCurrentAgendaView = 1 ; 127 //mCurrentAgendaView = 1 ;
128 lastDate = mMainView->dateNavigator()->selectedDates().first(); 128 lastDate = mMainView->dateNavigator()->selectedDates().first();
129 lastCount = mMainView->dateNavigator()->selectedDates().count(); 129 lastCount = mMainView->dateNavigator()->selectedDates().count();
130 lastNDMode = savemFlagShowNextxDays; 130 lastNDMode = savemFlagShowNextxDays;
131 mMainView->dateNavigator()->selectDate( date ); 131 mMainView->dateNavigator()->selectDate( date );
132 lastMode = 1; 132 lastMode = 1;
133 mCurrentAgendaView = 1 ; 133 mCurrentAgendaView = 1 ;
134 } else if (view == 4 ) { 134 } else if (view == 4 ) {
135 mCurrentAgendaView = 7 ; 135 mCurrentAgendaView = 7 ;
136 mMainView->dateNavigator()->selectDates( date, 7 ); 136 mMainView->dateNavigator()->selectDates( date, 7 );
137 } else if (view == 5 ) { 137 } else if (view == 5 ) {
138 mCurrentAgendaView = 14 ; 138 mCurrentAgendaView = 14 ;
139 mMainView->dateNavigator()->selectDates( date, 14); 139 mMainView->dateNavigator()->selectDates( date, 14);
140 } else if (view == 6 ) { 140 } else if (view == 6 ) {
141 //mMainView->dateNavigator()->selectDates( date, 7 ); 141 //mMainView->dateNavigator()->selectDates( date, 7 );
142 showMonthView(); 142 showMonthView();
143 } else if (view == 7 ) { 143 } else if (view == 7 ) {
144 mMainView->dateNavigator()->selectDate( date ); 144 mMainView->dateNavigator()->selectDate( date );
145 showJournalView(); 145 showJournalView();
146 } else if (view == 8 ) { 146 } else if (view == 8 ) {
147 globalFlagBlockAgenda = 1; 147 globalFlagBlockAgenda = 1;
148 if ( mCurrentAgendaView != 3 ) 148 if ( mCurrentAgendaView != 3 )
149 mCurrentAgendaView = -1; 149 mCurrentAgendaView = -1;
150 showAgendaView(KOPrefs::instance()->mFullViewMonth); 150 showAgendaView(KOPrefs::instance()->mFullViewMonth);
151 globalFlagBlockAgenda = 2; 151 globalFlagBlockAgenda = 2;
152 mMainView->dateNavigator()->selectDates( date , 152 mMainView->dateNavigator()->selectDates( date ,
153 KOPrefs::instance()->mNextXDays ); 153 KOPrefs::instance()->mNextXDays );
154 mFlagShowNextxDays = true; 154 mFlagShowNextxDays = true;
155 mCurrentAgendaView = 3 ; 155 mCurrentAgendaView = 3 ;
156 } if (view == 9) { // return behaviour, for getting back from mode == 3 (single day mode ) 156 } if (view == 9) { // return behaviour, for getting back from mode == 3 (single day mode )
157 if ( lastMode ) { 157 if ( lastMode ) {
158 mCurrentAgendaView = lastCount ; 158 mCurrentAgendaView = lastCount ;
159 mMainView->dateNavigator()->selectDates( lastDate, lastCount); 159 mMainView->dateNavigator()->selectDates( lastDate, lastCount);
160 mFlagShowNextxDays = lastNDMode; 160 mFlagShowNextxDays = lastNDMode;
161 if ( mFlagShowNextxDays ) { 161 if ( mFlagShowNextxDays ) {
162 mCurrentAgendaView = 3 ; 162 mCurrentAgendaView = 3 ;
163 } 163 }
164 } else 164 } else
165 showWeekView(); 165 showWeekView();
166 } else if (view == 10) { 166 } else if (view == 10) {
167 mMainView->dateNavigator()->selectDates( date,mMainView->dateNavigator()->selectedDates().count() ); 167 mMainView->dateNavigator()->selectDates( date,mMainView->dateNavigator()->selectedDates().count() );
168 } 168 }
169} 169}
170 170
171 171
172 172
173void KOViewManager::writeSettings(KConfig *config) 173void KOViewManager::writeSettings(KConfig *config)
174{ 174{
175 config->setGroup("General"); 175 config->setGroup("General");
176 176
177 QString view; 177 QString view;
178 if (mCurrentView == mWhatsNextView) view = "WhatsNext"; 178 if (mCurrentView == mWhatsNextView) view = "WhatsNext";
179 else if (mCurrentView == mMonthView) view = "Month"; 179 else if (mCurrentView == mMonthView) view = "Month";
180 else if (mCurrentView == mListView) view = "List"; 180 else if (mCurrentView == mListView) view = "List";
181 else if (mCurrentView == mJournalView) view = "Journal"; 181 else if (mCurrentView == mJournalView) view = "Journal";
182 else if (mCurrentView == mTimeSpanView) view = "TimeSpan"; 182 else if (mCurrentView == mTimeSpanView) view = "TimeSpan";
183 else if (mCurrentView == mTodoView) view = "Todo"; 183 else if (mCurrentView == mTodoView) view = "Todo";
184 else view = "Agenda"; 184 else view = "Agenda";
185 185
186 config->writeEntry("Current View",view); 186 config->writeEntry("Current View",view);
187 187
188 if (mAgendaView) { 188 if (mAgendaView) {
189 mAgendaView->writeSettings(config); 189 mAgendaView->writeSettings(config);
190 } 190 }
191 if (mTimeSpanView) { 191 if (mTimeSpanView) {
192 mTimeSpanView->writeSettings(config); 192 mTimeSpanView->writeSettings(config);
193 } 193 }
194 if (mListView) { 194 if (mListView) {
195 mListView->writeSettings(config); 195 mListView->writeSettings(config);
196 } 196 }
197 if (mTodoView) { 197 if (mTodoView) {
198 mTodoView->saveLayout(config,"Todo View"); 198 mTodoView->saveLayout(config,"Todo View");
199 } 199 }
200} 200}
201void KOViewManager::showNextView() 201void KOViewManager::showNextView()
202{ 202{
203 if (mCurrentView == mWhatsNextView) goto NEXT_X; 203 if (mCurrentView == mWhatsNextView) goto NEXT_X;
204 204
205 if (mCurrentView == mAgendaView && mFlagShowNextxDays) goto JOURNAL; 205 if (mCurrentView == mAgendaView && mFlagShowNextxDays) goto JOURNAL;
206 206
207 if (mCurrentView == mJournalView ) goto DAY_1; 207 if (mCurrentView == mJournalView ) goto DAY_1;
208 208
209 if (mCurrentView == mAgendaView && mCurrentAgendaView == 1 ) goto DAY_5; 209 if (mCurrentView == mAgendaView && mCurrentAgendaView == 1 ) goto DAY_5;
210 210
211 if (mCurrentView == mAgendaView && mCurrentAgendaView == 5 ) goto DAY_7; 211 if (mCurrentView == mAgendaView && mCurrentAgendaView == 5 ) goto DAY_7;
212 212
213 if (mCurrentView == mAgendaView ) goto DAY_6; 213 if (mCurrentView == mAgendaView ) goto DAY_6;
214 214
215 if (mCurrentView == mMonthView && KOPrefs::instance()->mMonthViewWeek) goto MONTH; 215 if (mCurrentView == mMonthView && KOPrefs::instance()->mMonthViewWeek) goto MONTH;
216 216
217 if (mCurrentView == mMonthView ) goto LIST; 217 if (mCurrentView == mMonthView ) goto LIST;
218 218
219 if (mCurrentView == mListView ) goto TODO; 219 if (mCurrentView == mListView ) goto TODO;
220 220
221 // if (mCurrentView == mTodoView ) goto LIST; 221 // if (mCurrentView == mTodoView ) goto LIST;
222 222
223 223
224 NEXT: 224 NEXT:
225 if ( KOPrefs::instance()->mShowIconNext ) { showWhatsNextView();return ;} 225 if ( KOPrefs::instance()->mShowIconNext ) { showWhatsNextView();return ;}
226 NEXT_X: 226 NEXT_X:
227 if ( KOPrefs::instance()->mShowIconNextDays ) { showNextXView() ;return ;} 227 if ( KOPrefs::instance()->mShowIconNextDays ) { showNextXView() ;return ;}
228 JOURNAL: 228 JOURNAL:
229 if ( KOPrefs::instance()->mShowIconJournal ) { showJournalView() ;return ;} 229 if ( KOPrefs::instance()->mShowIconJournal ) { showJournalView() ;return ;}
230 DAY_1: 230 DAY_1:
231 if ( KOPrefs::instance()->mShowIconDay1 ) { showDayView() ;return ;} 231 if ( KOPrefs::instance()->mShowIconDay1 ) { showDayView() ;return ;}
232 DAY_5: 232 DAY_5:
233 if ( KOPrefs::instance()->mShowIconDay5 ) { showWorkWeekView() ;return ;} 233 if ( KOPrefs::instance()->mShowIconDay5 ) { showWorkWeekView() ;return ;}
234 DAY_7: 234 DAY_7:
235 if ( KOPrefs::instance()->mShowIconDay7 ) { showWeekView();return ;} 235 if ( KOPrefs::instance()->mShowIconDay7 ) { showWeekView();return ;}
236 DAY_6: 236 DAY_6:
237 if ( KOPrefs::instance()->mShowIconDay6 ) { showMonthViewWeek();return ;} 237 if ( KOPrefs::instance()->mShowIconDay6 ) { showMonthViewWeek();return ;}
238 MONTH: 238 MONTH:
239 if ( KOPrefs::instance()->mShowIconMonth ) { showMonthView();return ;} 239 if ( KOPrefs::instance()->mShowIconMonth ) { showMonthView();return ;}
240 LIST: 240 LIST:
241 if ( KOPrefs::instance()->mShowIconList ) { showListView() ;return ;} 241 if ( KOPrefs::instance()->mShowIconList ) { showListView() ;return ;}
242 TODO: 242 TODO:
243 if ( KOPrefs::instance()->mShowIconTodoview ) { showTodoView() ;return ;} 243 if ( KOPrefs::instance()->mShowIconTodoview ) { showTodoView() ;return ;}
244 244
245 if ( KOPrefs::instance()->mShowIconNext ) { showWhatsNextView();return ;} 245 if ( KOPrefs::instance()->mShowIconNext ) { showWhatsNextView();return ;}
246 246
247 if ( KOPrefs::instance()->mShowIconNextDays ) { showNextXView() ;return ;} 247 if ( KOPrefs::instance()->mShowIconNextDays ) { showNextXView() ;return ;}
248 248
249 if ( KOPrefs::instance()->mShowIconJournal ) { showJournalView() ;return ;} 249 if ( KOPrefs::instance()->mShowIconJournal ) { showJournalView() ;return ;}
250 250
251 if ( KOPrefs::instance()->mShowIconDay1 ) { showDayView() ;return ;} 251 if ( KOPrefs::instance()->mShowIconDay1 ) { showDayView() ;return ;}
252 252
253 if ( KOPrefs::instance()->mShowIconDay5 ) { showWorkWeekView() ;return ;} 253 if ( KOPrefs::instance()->mShowIconDay5 ) { showWorkWeekView() ;return ;}
254 254
255 if ( KOPrefs::instance()->mShowIconDay7 ) { showWeekView();return ;} 255 if ( KOPrefs::instance()->mShowIconDay7 ) { showWeekView();return ;}
256 256
257 if ( KOPrefs::instance()->mShowIconDay6 ) { showMonthViewWeek();return ;} 257 if ( KOPrefs::instance()->mShowIconDay6 ) { showMonthViewWeek();return ;}
258 258
259 if ( KOPrefs::instance()->mShowIconMonth ) { showMonthView();return ;} 259 if ( KOPrefs::instance()->mShowIconMonth ) { showMonthView();return ;}
260 260
261 if ( KOPrefs::instance()->mShowIconList ) { showListView() ;return ;} 261 if ( KOPrefs::instance()->mShowIconList ) { showListView() ;return ;}
262 262
263 if ( KOPrefs::instance()->mShowIconTodoview ) { showTodoView() ;return ;} 263 if ( KOPrefs::instance()->mShowIconTodoview ) { showTodoView() ;return ;}
264 264
265 265
266 266
267} 267}
268void KOViewManager::showView(KOrg::BaseView *view, bool fullScreen ) 268void KOViewManager::showView(KOrg::BaseView *view, bool fullScreen )
269{ 269{
270 270
271 //mFlagShowNextxDays = false; 271 //mFlagShowNextxDays = false;
272 //if(view == mCurrentView) return; 272 //if(view == mCurrentView) return;
273 if ( view == 0 ) { 273 if ( view == 0 ) {
274 view = mCurrentView; 274 view = mCurrentView;
275 if ( view == 0 ) 275 if ( view == 0 )
276 return; 276 return;
277 } 277 }
278 bool callupdate = !(view == mCurrentView); 278 bool callupdate = !(view == mCurrentView);
279 bool full = fullScreen; 279 bool full = fullScreen;
280 if(view == mCurrentView && view != mWhatsNextView ) { 280 if(view == mCurrentView && view != mWhatsNextView ) {
281 if ( mCurrentAgendaView < 0 ) 281 if ( mCurrentAgendaView < 0 )
282 return; 282 return;
283 if ( view != mMonthView ) 283 if ( view != mMonthView )
284 full = mMainView->leftFrame()->isVisible(); 284 full = mMainView->leftFrame()->isVisible();
285 } else { 285 } else {
286 if ( view == mMonthView && mMonthView) 286 if ( view == mMonthView && mMonthView)
287 ;//mMonthView->skipResize = true ; 287 ;//mMonthView->skipResize = true ;
288 mCurrentView = view; 288 mCurrentView = view;
289 // bool full = fullScreen; 289 // bool full = fullScreen;
290 bool isFull = !mMainView->leftFrame()->isVisible(); 290 bool isFull = !mMainView->leftFrame()->isVisible();
291 if ( isFull && KOPrefs::instance()->mViewChangeHoldFullscreen ) 291 if ( isFull && KOPrefs::instance()->mViewChangeHoldFullscreen )
292 full = true; 292 full = true;
293 if ( !isFull && KOPrefs::instance()->mViewChangeHoldNonFullscreen ) 293 if ( !isFull && KOPrefs::instance()->mViewChangeHoldNonFullscreen )
294 full = false; 294 full = false;
295 } 295 }
296 if ( mAgendaView ) mAgendaView->deleteSelectedDateTime(); 296 if ( mAgendaView ) mAgendaView->deleteSelectedDateTime();
297 //raiseCurrentView( full ); 297 //raiseCurrentView( full );
298 mMainView->processIncidenceSelection( 0 ); 298 mMainView->processIncidenceSelection( 0 );
299 //mMainView->updateView(); 299 //mMainView->updateView();
300 raiseCurrentView( full, callupdate ); 300 raiseCurrentView( full, callupdate );
301 mMainView->adaptNavigationUnits(); 301 mMainView->adaptNavigationUnits();
302} 302}
303 303
304void KOViewManager::raiseCurrentView( bool fullScreen, bool callUpdateView ) 304void KOViewManager::raiseCurrentView( bool fullScreen, bool callUpdateView )
305{ 305{
306 mCurrentAgendaView = 0; 306 mCurrentAgendaView = 0;
307 if ( fullScreen ) { 307 if ( fullScreen ) {
308 mMainView->leftFrame()->hide(); 308 mMainView->leftFrame()->hide();
309 } else { 309 } else {
310 mMainView->leftFrame()->show(); 310 mMainView->leftFrame()->show();
311 } 311 }
312 //if ( mCurrentView == mMonthView ) qApp->processEvents(); 312 //if ( mCurrentView == mMonthView ) qApp->processEvents();
313 emit signalFullScreen( !fullScreen ); 313 emit signalFullScreen( !fullScreen );
314 if ( callUpdateView ) 314 if ( callUpdateView )
315 mMainView->updateView(); 315 mMainView->updateView();
316 316
317 if ( globalFlagBlockAgenda == 5 ) { 317 if ( globalFlagBlockAgenda == 5 ) {
318 globalFlagBlockAgenda = 4; 318 globalFlagBlockAgenda = 4;
319 globalFlagBlockAgendaItemPaint = 1; 319 globalFlagBlockAgendaItemPaint = 1;
320 } 320 }
321 mMainView->viewStack()->raiseWidget(mCurrentView); 321 mMainView->viewStack()->raiseWidget(mCurrentView);
322 if ( globalFlagBlockAgenda == 4 ) { 322 if ( globalFlagBlockAgenda == 4 ) {
323 if ( mCurrentView == mAgendaView ) { 323 if ( mCurrentView == mAgendaView ) {
324 //globalFlagBlockAgenda =1 ; 324 //globalFlagBlockAgenda =1 ;
325 if ( KOPrefs::instance()->mSetTimeToDayStartAt ) 325 if ( KOPrefs::instance()->mSetTimeToDayStartAt )
326 mAgendaView->setStartHour( KOPrefs::instance()->mDayBegins ); 326 mAgendaView->setStartHour( KOPrefs::instance()->mDayBegins );
327 else if ( KOPrefs::instance()->mCenterOnCurrentTime ) 327 else if ( KOPrefs::instance()->mCenterOnCurrentTime )
328 mAgendaView->setStartHour( QTime::currentTime ().hour() ); 328 mAgendaView->setStartHour( QTime::currentTime ().hour() );
329 qApp->processEvents(); 329 qApp->processEvents();
330 //qDebug("qApp->processEvents() "); 330 //qDebug("qApp->processEvents() ");
331 globalFlagBlockAgenda = 0; 331 globalFlagBlockAgenda = 0;
332 mAgendaView->repaintAgenda(); 332 mAgendaView->repaintAgenda();
333 333
334 } 334 }
335 globalFlagBlockAgenda = 0; 335 globalFlagBlockAgenda = 0;
336 } 336 }
337 emit signalAgendaView( mCurrentView == mAgendaView ); 337 emit signalAgendaView( mCurrentView == mAgendaView );
338 //qDebug("raiseCurrentView ende "); 338 //qDebug("raiseCurrentView ende ");
339 339
340} 340}
341 341
342void KOViewManager::updateView() 342void KOViewManager::updateView()
343{ 343{
344 // qDebug("KOViewManager::updateView() "); 344 // qDebug("KOViewManager::updateView() ");
345 // if we are updating mTodoView, we get endless recursion 345 // if we are updating mTodoView, we get endless recursion
346 if ( mTodoView == mCurrentView ) 346 if ( mTodoView == mCurrentView )
347 return; 347 return;
348 if ( mCurrentView ) mCurrentView->updateView(); 348 if ( mCurrentView ) mCurrentView->updateView();
349 349
350} 350}
351 351
352void KOViewManager::updateView(const QDate &start, const QDate &end) 352void KOViewManager::updateView(const QDate &start, const QDate &end)
353{ 353{
354 // kdDebug() << "KOViewManager::updateView()" << endl; 354 // kdDebug() << "KOViewManager::updateView()" << endl;
355 355
356 if (mCurrentView) mCurrentView->showDates(start, end); 356 if (mCurrentView) mCurrentView->showDates(start, end);
357 357
358 if (mTodoView && mTodoView == mCurrentView ) mTodoView->updateView(); 358 if (mTodoView && mTodoView == mCurrentView ) mTodoView->updateView();
359} 359}
360 360
361 361
362void KOViewManager::updateWNview() 362void KOViewManager::updateWNview()
363{ 363{
364 if ( mCurrentView == mWhatsNextView && mWhatsNextView ) 364 if ( mCurrentView == mWhatsNextView && mWhatsNextView )
365 mWhatsNextView->updateView(); 365 mWhatsNextView->updateView();
366 366
367} 367}
368void KOViewManager::showWhatsNextView() 368void KOViewManager::showWhatsNextView()
369{ 369{
370 if (!mWhatsNextView) { 370 if (!mWhatsNextView) {
371 mWhatsNextView = new KOWhatsNextView(mMainView->calendar(),mMainView->viewStack(), 371 mWhatsNextView = new KOWhatsNextView(mMainView->calendar(),mMainView->viewStack(),
372 "KOViewManager::WhatsNextView"); 372 "KOViewManager::WhatsNextView");
373 mWhatsNextView->setEventViewer( mMainView->getEventViewerDialog()); 373 mWhatsNextView->setEventViewer( mMainView->getEventViewerDialog());
374 connect(mMainView, SIGNAL(configChanged()), mWhatsNextView, SLOT(updateConfig())); 374 connect(mMainView, SIGNAL(configChanged()), mWhatsNextView, SLOT(updateConfig()));
375 addView(mWhatsNextView); 375 addView(mWhatsNextView);
376 connect(this, SIGNAL( printWNV() ), 376 connect(this, SIGNAL( printWNV() ),
377 mWhatsNextView, SLOT( printMe() ) ); 377 mWhatsNextView, SLOT( printMe() ) );
378 } 378 }
379 globalFlagBlockAgenda = 1; 379 globalFlagBlockAgenda = 1;
380 showView(mWhatsNextView, true ); 380 showView(mWhatsNextView, true );
381 //mWhatsNextView->updateView(); 381 //mWhatsNextView->updateView();
382 382
383} 383}
384 384
385void KOViewManager::slotprintWNV()
386{
387 if (!mWhatsNextView)
388 showWhatsNextView();
389 emit printWNV();
390
391}
385void KOViewManager::showListView() 392void KOViewManager::showListView()
386{ 393{
387 if (!mListView) { 394 if (!mListView) {
388 mListView = new KOListView(mMainView->calendar(), mMainView->viewStack(), "KOViewManager::ListView"); 395 mListView = new KOListView(mMainView->calendar(), mMainView->viewStack(), "KOViewManager::ListView");
389 addView(mListView); 396 addView(mListView);
390 397
391 connect(mListView, SIGNAL(showIncidenceSignal(Incidence *)), 398 connect(mListView, SIGNAL(showIncidenceSignal(Incidence *)),
392 mMainView, SLOT(showIncidence(Incidence *))); 399 mMainView, SLOT(showIncidence(Incidence *)));
393 connect(mListView, SIGNAL(editIncidenceSignal(Incidence *)), 400 connect(mListView, SIGNAL(editIncidenceSignal(Incidence *)),
394 mMainView, SLOT(editIncidence(Incidence *))); 401 mMainView, SLOT(editIncidence(Incidence *)));
395 connect(mListView, SIGNAL(deleteIncidenceSignal(Incidence *)), 402 connect(mListView, SIGNAL(deleteIncidenceSignal(Incidence *)),
396 mMainView, SLOT(deleteIncidence(Incidence *))); 403 mMainView, SLOT(deleteIncidence(Incidence *)));
397 connect( mListView, SIGNAL( incidenceSelected( Incidence * ) ), 404 connect( mListView, SIGNAL( incidenceSelected( Incidence * ) ),
398 mMainView, SLOT( processMainViewSelection( Incidence * ) ) ); 405 mMainView, SLOT( processMainViewSelection( Incidence * ) ) );
399 connect( mListView, SIGNAL( signalNewEvent() ), 406 connect( mListView, SIGNAL( signalNewEvent() ),
400 mMainView, SLOT( newEvent() ) ); 407 mMainView, SLOT( newEvent() ) );
401 connect(mMainView, SIGNAL(configChanged()), mListView, SLOT(updateConfig())); 408 connect(mMainView, SIGNAL(configChanged()), mListView, SLOT(updateConfig()));
402 connect( mListView, SIGNAL( cloneIncidenceSignal( Incidence * ) ), 409 connect( mListView, SIGNAL( cloneIncidenceSignal( Incidence * ) ),
403 mMainView, SLOT ( cloneIncidence( Incidence * ) ) ); 410 mMainView, SLOT ( cloneIncidence( Incidence * ) ) );
404 connect( mListView, SIGNAL( cancelIncidenceSignal( Incidence * ) ), 411 connect( mListView, SIGNAL( cancelIncidenceSignal( Incidence * ) ),
405 mMainView, SLOT ( cancelIncidence( Incidence * ) ) ); 412 mMainView, SLOT ( cancelIncidence( Incidence * ) ) );
406 connect( mListView, SIGNAL( moveIncidenceSignal( Incidence * ) ), 413 connect( mListView, SIGNAL( moveIncidenceSignal( Incidence * ) ),
407 mMainView, SLOT ( moveIncidence( Incidence * ) ) ); 414 mMainView, SLOT ( moveIncidence( Incidence * ) ) );
408 connect( mListView, SIGNAL( beamIncidenceSignal( Incidence * ) ), 415 connect( mListView, SIGNAL( beamIncidenceSignal( Incidence * ) ),
409 mMainView, SLOT ( beamIncidence( Incidence * ) ) ); 416 mMainView, SLOT ( beamIncidence( Incidence * ) ) );
410 } 417 }
411 // bool temp = mFlagShowNextxDays; 418 // bool temp = mFlagShowNextxDays;
412 //globalFlagBlockPainting = true; 419 //globalFlagBlockPainting = true;
413 globalFlagBlockAgenda = 1; 420 globalFlagBlockAgenda = 1;
414 if ( KOPrefs::instance()->mListViewMonthTimespan ) { 421 if ( KOPrefs::instance()->mListViewMonthTimespan ) {
415 mMainView->setBlockShowDates( true ); 422 mMainView->setBlockShowDates( true );
416 mMainView->dateNavigator()->selectMonth(); 423 mMainView->dateNavigator()->selectMonth();
417 mMainView->setBlockShowDates( false ); 424 mMainView->setBlockShowDates( false );
418 } 425 }
419 showView(mListView, KOPrefs::instance()->mFullViewTodo); 426 showView(mListView, KOPrefs::instance()->mFullViewTodo);
420 //mFlagShowNextxDays = temp; 427 //mFlagShowNextxDays = temp;
421} 428}
422 429
423void KOViewManager::showAgendaView( bool fullScreen ) 430void KOViewManager::showAgendaView( bool fullScreen )
424{ 431{
425 432
426 mMainView->dialogManager()->hideSearchDialog(); 433 mMainView->dialogManager()->hideSearchDialog();
427 // qDebug("KOViewManager::showAgendaView "); 434 // qDebug("KOViewManager::showAgendaView ");
428 bool full; 435 bool full;
429 full = fullScreen; 436 full = fullScreen;
430 if (!mAgendaView) { 437 if (!mAgendaView) {
431 full = false; 438 full = false;
432 mAgendaView = new KOAgendaView(mMainView->calendar(), mMainView->viewStack(), "KOViewManager::AgendaView"); 439 mAgendaView = new KOAgendaView(mMainView->calendar(), mMainView->viewStack(), "KOViewManager::AgendaView");
433 addView(mAgendaView); 440 addView(mAgendaView);
434#ifndef DESKTOP_VERSION 441#ifndef DESKTOP_VERSION
435 QPEApplication::setStylusOperation( mAgendaView, QPEApplication::RightOnHold ); 442 QPEApplication::setStylusOperation( mAgendaView, QPEApplication::RightOnHold );
436#endif 443#endif
437 connect( mAgendaView, SIGNAL( incidenceChanged(Incidence *, int )), 444 connect( mAgendaView, SIGNAL( incidenceChanged(Incidence *, int )),
438 mMainView, SLOT( changeIncidenceDisplay( Incidence *, int ) )); 445 mMainView, SLOT( changeIncidenceDisplay( Incidence *, int ) ));
439 446
440 // SIGNALS/SLOTS FOR DAY/WEEK VIEW 447 // SIGNALS/SLOTS FOR DAY/WEEK VIEW
441 448
442 connect(mAgendaView,SIGNAL(showDateView( int, QDate )),SLOT(showDateView( int, QDate ))); 449 connect(mAgendaView,SIGNAL(showDateView( int, QDate )),SLOT(showDateView( int, QDate )));
443 450
444 connect(mAgendaView,SIGNAL(newTodoSignal(QDateTime,bool)), 451 connect(mAgendaView,SIGNAL(newTodoSignal(QDateTime,bool)),
445 mMainView, SLOT(newTodoDateTime(QDateTime,bool))); 452 mMainView, SLOT(newTodoDateTime(QDateTime,bool)));
446 connect(mAgendaView,SIGNAL(newEventSignal(QDateTime)), 453 connect(mAgendaView,SIGNAL(newEventSignal(QDateTime)),
447 mMainView, SLOT(newEvent(QDateTime))); 454 mMainView, SLOT(newEvent(QDateTime)));
448 connect(mAgendaView,SIGNAL(newEventSignal(QDateTime,QDateTime)), 455 connect(mAgendaView,SIGNAL(newEventSignal(QDateTime,QDateTime)),
449 mMainView, SLOT(newEvent(QDateTime,QDateTime))); 456 mMainView, SLOT(newEvent(QDateTime,QDateTime)));
450 connect(mAgendaView,SIGNAL(newEventSignal(QDate)), 457 connect(mAgendaView,SIGNAL(newEventSignal(QDate)),
451 mMainView, SLOT(newEvent(QDate))); 458 mMainView, SLOT(newEvent(QDate)));
452 459
453 connect(mAgendaView, SIGNAL(editIncidenceSignal(Incidence *)), 460 connect(mAgendaView, SIGNAL(editIncidenceSignal(Incidence *)),
454 mMainView, SLOT(editIncidence(Incidence *))); 461 mMainView, SLOT(editIncidence(Incidence *)));
455 connect(mAgendaView, SIGNAL(showIncidenceSignal(Incidence *)), 462 connect(mAgendaView, SIGNAL(showIncidenceSignal(Incidence *)),
456 mMainView, SLOT(showIncidence(Incidence *))); 463 mMainView, SLOT(showIncidence(Incidence *)));
457 connect(mAgendaView, SIGNAL(deleteIncidenceSignal(Incidence *)), 464 connect(mAgendaView, SIGNAL(deleteIncidenceSignal(Incidence *)),
458 mMainView, SLOT(deleteIncidence(Incidence *))); 465 mMainView, SLOT(deleteIncidence(Incidence *)));
459 466
460 connect( mAgendaView, SIGNAL( incidenceSelected( Incidence * ) ), 467 connect( mAgendaView, SIGNAL( incidenceSelected( Incidence * ) ),
461 mMainView, SLOT( processMainViewSelection( Incidence * ) ) ); 468 mMainView, SLOT( processMainViewSelection( Incidence * ) ) );
462 469
463 connect(mAgendaView, SIGNAL( toggleExpand() ), 470 connect(mAgendaView, SIGNAL( toggleExpand() ),
464 mMainView, SLOT( toggleExpand() ) ); 471 mMainView, SLOT( toggleExpand() ) );
465 472
466 connect( mAgendaView, SIGNAL( cloneIncidenceSignal(Incidence *) ), 473 connect( mAgendaView, SIGNAL( cloneIncidenceSignal(Incidence *) ),
467 mMainView, SLOT(cloneIncidence(Incidence *) ) ) ; 474 mMainView, SLOT(cloneIncidence(Incidence *) ) ) ;
468 connect( mAgendaView, SIGNAL( cancelIncidenceSignal(Incidence *) ), 475 connect( mAgendaView, SIGNAL( cancelIncidenceSignal(Incidence *) ),
469 mMainView, SLOT(cancelIncidence(Incidence *) ) ) ; 476 mMainView, SLOT(cancelIncidence(Incidence *) ) ) ;
470 connect(mMainView, SIGNAL(configChanged()), mAgendaView, SLOT(updateConfig())); 477 connect(mMainView, SIGNAL(configChanged()), mAgendaView, SLOT(updateConfig()));
471 connect( mMainView, SIGNAL( todoModified( Todo *, int )), mAgendaView, 478 connect( mMainView, SIGNAL( todoModified( Todo *, int )), mAgendaView,
472 SLOT( updateTodo( Todo *, int ) ) ); 479 SLOT( updateTodo( Todo *, int ) ) );
473 connect( mAgendaView,SIGNAL( todoMoved( Todo *, int )), 480 connect( mAgendaView,SIGNAL( todoMoved( Todo *, int )),
474 mMainView, SIGNAL( todoModified( Todo *, int ))); 481 mMainView, SIGNAL( todoModified( Todo *, int )));
475 connect( mAgendaView, SIGNAL( moveIncidenceSignal( Incidence * ) ), 482 connect( mAgendaView, SIGNAL( moveIncidenceSignal( Incidence * ) ),
476 mMainView, SLOT ( moveIncidence( Incidence * ) ) ); 483 mMainView, SLOT ( moveIncidence( Incidence * ) ) );
477 connect( mAgendaView, SIGNAL( beamIncidenceSignal( Incidence * ) ), 484 connect( mAgendaView, SIGNAL( beamIncidenceSignal( Incidence * ) ),
478 mMainView, SLOT ( beamIncidence( Incidence * ) ) ); 485 mMainView, SLOT ( beamIncidence( Incidence * ) ) );
479 connect( mAgendaView, SIGNAL( selectWeekNum( int ) ), 486 connect( mAgendaView, SIGNAL( selectWeekNum( int ) ),
480 mMainView->dateNavigator(), SLOT ( selectWeek( int ) ) ); 487 mMainView->dateNavigator(), SLOT ( selectWeek( int ) ) );
481 mAgendaView->readSettings(); 488 mAgendaView->readSettings();
482 mAgendaView->updateConfig(); 489 mAgendaView->updateConfig();
483 } 490 }
484 491
485 showView( mAgendaView, full); 492 showView( mAgendaView, full);
486 493
487} 494}
488 495
489void KOViewManager::showDayView() 496void KOViewManager::showDayView()
490{ 497{
491 mCurrentAgendaView = mMainView->dateNavigator()->selectedDates().count(); 498 mCurrentAgendaView = mMainView->dateNavigator()->selectedDates().count();
492 mFlagShowNextxDays = false; 499 mFlagShowNextxDays = false;
493 globalFlagBlockLabel = 1; 500 globalFlagBlockLabel = 1;
494 globalFlagBlockAgenda = 1; 501 globalFlagBlockAgenda = 1;
495 if ( mCurrentAgendaView != 1 ) 502 if ( mCurrentAgendaView != 1 )
496 mCurrentAgendaView = -1; 503 mCurrentAgendaView = -1;
497 showAgendaView(); 504 showAgendaView();
498 qApp->processEvents(); 505 qApp->processEvents();
499 globalFlagBlockAgenda = 2; 506 globalFlagBlockAgenda = 2;
500 globalFlagBlockLabel = 0; 507 globalFlagBlockLabel = 0;
501 mMainView->dateNavigator()->selectDates( 1 ); 508 mMainView->dateNavigator()->selectDates( 1 );
502 mCurrentAgendaView = 1 ; 509 mCurrentAgendaView = 1 ;
503 510
504} 511}
505 512
506void KOViewManager::showWorkWeekView() 513void KOViewManager::showWorkWeekView()
507{ 514{
508 mCurrentAgendaView = mMainView->dateNavigator()->selectedDates().count(); 515 mCurrentAgendaView = mMainView->dateNavigator()->selectedDates().count();
509 mFlagShowNextxDays = false; 516 mFlagShowNextxDays = false;
510 globalFlagBlockAgenda = 1; 517 globalFlagBlockAgenda = 1;
511 globalFlagBlockLabel = 1; 518 globalFlagBlockLabel = 1;
512 if ( mCurrentAgendaView != 5 ) 519 if ( mCurrentAgendaView != 5 )
513 mCurrentAgendaView = -1; 520 mCurrentAgendaView = -1;
514 showAgendaView(); 521 showAgendaView();
515 qApp->processEvents(); 522 qApp->processEvents();
516 globalFlagBlockAgenda = 2; 523 globalFlagBlockAgenda = 2;
517 globalFlagBlockLabel = 0; 524 globalFlagBlockLabel = 0;
518 mMainView->dateNavigator()->selectWorkWeek(); 525 mMainView->dateNavigator()->selectWorkWeek();
519 mCurrentAgendaView = 5 ; 526 mCurrentAgendaView = 5 ;
520 527
521} 528}
522 529
523void KOViewManager::showWeekView() 530void KOViewManager::showWeekView()
524{ 531{
525 /* 532 /*
526 globalFlagBlockAgenda = 2; 533 globalFlagBlockAgenda = 2;
527 qDebug("4globalFlagBlockAgenda = 2; "); 534 qDebug("4globalFlagBlockAgenda = 2; ");
528 //globalFlagBlockPainting = true; 535 //globalFlagBlockPainting = true;
529 mMainView->dateNavigator()->selectWeek(); 536 mMainView->dateNavigator()->selectWeek();
530 showAgendaView(); 537 showAgendaView();
531 */ 538 */
532 539
533 540
534 mCurrentAgendaView = mMainView->dateNavigator()->selectedDates().count(); 541 mCurrentAgendaView = mMainView->dateNavigator()->selectedDates().count();
535 mFlagShowNextxDays = false; 542 mFlagShowNextxDays = false;
536 globalFlagBlockAgenda = 1; 543 globalFlagBlockAgenda = 1;
537 globalFlagBlockLabel = 1; 544 globalFlagBlockLabel = 1;
538 if ( mCurrentAgendaView != 7 ) 545 if ( mCurrentAgendaView != 7 )
539 mCurrentAgendaView = -1; 546 mCurrentAgendaView = -1;
540 showAgendaView(); 547 showAgendaView();
541 qApp->processEvents(); 548 qApp->processEvents();
542 globalFlagBlockAgenda = 2; 549 globalFlagBlockAgenda = 2;
543 globalFlagBlockLabel = 0; 550 globalFlagBlockLabel = 0;
544 mMainView->dateNavigator()->selectWeek(); 551 mMainView->dateNavigator()->selectWeek();
545 mCurrentAgendaView = 7 ; 552 mCurrentAgendaView = 7 ;
546} 553}
547 554
548void KOViewManager::showNextXView() 555void KOViewManager::showNextXView()
549{ 556{
550 557
551 globalFlagBlockAgenda = 1; 558 globalFlagBlockAgenda = 1;
552 if ( mCurrentAgendaView != 3 ) 559 if ( mCurrentAgendaView != 3 )
553 mCurrentAgendaView = -1; 560 mCurrentAgendaView = -1;
554 showAgendaView(KOPrefs::instance()->mFullViewMonth); 561 showAgendaView(KOPrefs::instance()->mFullViewMonth);
555 globalFlagBlockAgenda = 2; 562 globalFlagBlockAgenda = 2;
556 mMainView->dateNavigator()->selectDates( QDate::currentDate(), 563 mMainView->dateNavigator()->selectDates( QDate::currentDate(),
557 KOPrefs::instance()->mNextXDays ); 564 KOPrefs::instance()->mNextXDays );
558 mFlagShowNextxDays = true; 565 mFlagShowNextxDays = true;
559 mCurrentAgendaView = 3 ; 566 mCurrentAgendaView = 3 ;
560} 567}
561bool KOViewManager::showsNextDays() 568bool KOViewManager::showsNextDays()
562{ 569{
563 return mFlagShowNextxDays; 570 return mFlagShowNextxDays;
564} 571}
565void KOViewManager::createMonthView() 572void KOViewManager::createMonthView()
566{ 573{
567if (!mMonthView) { 574if (!mMonthView) {
568 mMonthView = new KOMonthView(mMainView->calendar(), mMainView->viewStack(), "KOViewManager::MonthView"); 575 mMonthView = new KOMonthView(mMainView->calendar(), mMainView->viewStack(), "KOViewManager::MonthView");
569 576
570 addView(mMonthView); 577 addView(mMonthView);
571 // mMonthView->show(); 578 // mMonthView->show();
572 // SIGNALS/SLOTS FOR MONTH VIEW 579 // SIGNALS/SLOTS FOR MONTH VIEW
573 connect(mMonthView, SIGNAL(newEventSignal(QDateTime)), 580 connect(mMonthView, SIGNAL(newEventSignal(QDateTime)),
574 mMainView, SLOT(newEvent(QDateTime))); 581 mMainView, SLOT(newEvent(QDateTime)));
575 582
576 connect(mMonthView, SIGNAL(showIncidenceSignal(Incidence *)), 583 connect(mMonthView, SIGNAL(showIncidenceSignal(Incidence *)),
577 mMainView, SLOT(showIncidence(Incidence *))); 584 mMainView, SLOT(showIncidence(Incidence *)));
578 connect(mMonthView, SIGNAL(editIncidenceSignal(Incidence *)), 585 connect(mMonthView, SIGNAL(editIncidenceSignal(Incidence *)),
579 mMainView, SLOT(editIncidence(Incidence *))); 586 mMainView, SLOT(editIncidence(Incidence *)));
580 connect(mMonthView, SIGNAL(deleteIncidenceSignal(Incidence *)), 587 connect(mMonthView, SIGNAL(deleteIncidenceSignal(Incidence *)),
581 mMainView, SLOT(deleteIncidence(Incidence *))); 588 mMainView, SLOT(deleteIncidence(Incidence *)));
582 589
583 connect( mMonthView, SIGNAL( incidenceSelected( Incidence * ) ), 590 connect( mMonthView, SIGNAL( incidenceSelected( Incidence * ) ),
584 mMainView, SLOT( processMainViewSelection( Incidence * ) ) ); 591 mMainView, SLOT( processMainViewSelection( Incidence * ) ) );
585 connect( mMonthView, SIGNAL( cloneIncidenceSignal( Incidence * ) ), 592 connect( mMonthView, SIGNAL( cloneIncidenceSignal( Incidence * ) ),
586 mMainView, SLOT ( cloneIncidence( Incidence * ) ) ); 593 mMainView, SLOT ( cloneIncidence( Incidence * ) ) );
587 connect( mMonthView, SIGNAL( cancelIncidenceSignal( Incidence * ) ), 594 connect( mMonthView, SIGNAL( cancelIncidenceSignal( Incidence * ) ),
588 mMainView, SLOT ( cancelIncidence( Incidence * ) ) ); 595 mMainView, SLOT ( cancelIncidence( Incidence * ) ) );
589 596
590 connect( mMonthView, SIGNAL( moveIncidenceSignal( Incidence * ) ), 597 connect( mMonthView, SIGNAL( moveIncidenceSignal( Incidence * ) ),
591 mMainView, SLOT ( moveIncidence( Incidence * ) ) ); 598 mMainView, SLOT ( moveIncidence( Incidence * ) ) );
592 connect( mMonthView, SIGNAL( beamIncidenceSignal( Incidence * ) ), 599 connect( mMonthView, SIGNAL( beamIncidenceSignal( Incidence * ) ),
593 mMainView, SLOT ( beamIncidence( Incidence * ) ) ); 600 mMainView, SLOT ( beamIncidence( Incidence * ) ) );
594 connect( mMonthView, SIGNAL( selectWeekNum( int ) ), 601 connect( mMonthView, SIGNAL( selectWeekNum( int ) ),
595 mMainView->dateNavigator(), SLOT ( selectWeekFromMonthView( int ) ) ); 602 mMainView->dateNavigator(), SLOT ( selectWeekFromMonthView( int ) ) );
596 connect( mMonthView, SIGNAL( selectMonth() ), 603 connect( mMonthView, SIGNAL( selectMonth() ),
597 mMainView->dateNavigator(), SLOT ( selectMonthFromMonthview() ) ); 604 mMainView->dateNavigator(), SLOT ( selectMonthFromMonthview() ) );
598 connect( mMonthView, SIGNAL( showDaySignal( QDate ) ), 605 connect( mMonthView, SIGNAL( showDaySignal( QDate ) ),
599 mMainView, SLOT ( showDay( QDate ) ) ); 606 mMainView, SLOT ( showDay( QDate ) ) );
600 connect(mMainView, SIGNAL(configChanged()), mMonthView, SLOT(updateConfig())); 607 connect(mMainView, SIGNAL(configChanged()), mMonthView, SLOT(updateConfig()));
601 connect( mMonthView, SIGNAL(nextMonth() ), 608 connect( mMonthView, SIGNAL(nextMonth() ),
602 mMonthView->navigatorBar(), SIGNAL(goNextMonth() ) ); 609 mMonthView->navigatorBar(), SIGNAL(goNextMonth() ) );
603 connect( mMonthView, SIGNAL(prevMonth() ), 610 connect( mMonthView, SIGNAL(prevMonth() ),
604 mMonthView->navigatorBar(), SIGNAL(goPrevMonth() ) ); 611 mMonthView->navigatorBar(), SIGNAL(goPrevMonth() ) );
605 connect( mMonthView->navigatorBar(), SIGNAL( goPrevYear() ), 612 connect( mMonthView->navigatorBar(), SIGNAL( goPrevYear() ),
606 mMainView->dateNavigator(), SLOT( selectPreviousYear() ) ); 613 mMainView->dateNavigator(), SLOT( selectPreviousYear() ) );
607 connect( mMonthView->navigatorBar(), SIGNAL( goNextYear() ), 614 connect( mMonthView->navigatorBar(), SIGNAL( goNextYear() ),
608 mMainView->dateNavigator(), SLOT( selectNextYear() ) ); 615 mMainView->dateNavigator(), SLOT( selectNextYear() ) );
609 connect( mMonthView->navigatorBar(), SIGNAL( goPrevMonth() ), 616 connect( mMonthView->navigatorBar(), SIGNAL( goPrevMonth() ),
610 mMainView->dateNavigator(), SLOT( selectPreviousMonth() ) ); 617 mMainView->dateNavigator(), SLOT( selectPreviousMonth() ) );
611 connect( mMonthView->navigatorBar(), SIGNAL( goNextMonth() ), 618 connect( mMonthView->navigatorBar(), SIGNAL( goNextMonth() ),
612 mMainView->dateNavigator(), SLOT( selectNextMonth() ) ); 619 mMainView->dateNavigator(), SLOT( selectNextMonth() ) );
613 connect( mMonthView->navigatorBar(), SIGNAL( goPrevWeek() ), 620 connect( mMonthView->navigatorBar(), SIGNAL( goPrevWeek() ),
614 mMainView->dateNavigator(), SLOT( selectPreviousWeek() ) ); 621 mMainView->dateNavigator(), SLOT( selectPreviousWeek() ) );
615 connect( mMonthView->navigatorBar(), SIGNAL( goNextWeek() ), 622 connect( mMonthView->navigatorBar(), SIGNAL( goNextWeek() ),
616 mMainView->dateNavigator(), SLOT( selectNextWeek() ) ); 623 mMainView->dateNavigator(), SLOT( selectNextWeek() ) );
617 624
618 connect( mMainView->dateNavigator(), SIGNAL( datesSelected( const KCal::DateList & ) ), 625 connect( mMainView->dateNavigator(), SIGNAL( datesSelected( const KCal::DateList & ) ),
619 mMonthView->navigatorBar(), SLOT( selectDates( const KCal::DateList & ) ) ); 626 mMonthView->navigatorBar(), SLOT( selectDates( const KCal::DateList & ) ) );
620 627
621 628
622 connect( mMonthView->navigatorBar(), SIGNAL( monthSelected ( int ) ), 629 connect( mMonthView->navigatorBar(), SIGNAL( monthSelected ( int ) ),
623 mMainView->dateNavigator(), SLOT( slotMonthSelect( int ) ) ); 630 mMainView->dateNavigator(), SLOT( slotMonthSelect( int ) ) );
624 631
625 } 632 }
626} 633}
627void KOViewManager::showMonthViewWeek() 634void KOViewManager::showMonthViewWeek()
628{ 635{
629 createMonthView(); 636 createMonthView();
630 globalFlagBlockAgenda = 1; 637 globalFlagBlockAgenda = 1;
631 bool full = true; 638 bool full = true;
632 if ( mCurrentView == mMonthView) 639 if ( mCurrentView == mMonthView)
633 full = mMainView->leftFrame()->isVisible(); 640 full = mMainView->leftFrame()->isVisible();
634 if ( !KOPrefs::instance()->mMonthViewWeek ) { 641 if ( !KOPrefs::instance()->mMonthViewWeek ) {
635 mMonthView->switchView(); 642 mMonthView->switchView();
636 if ( KOPrefs::instance()->mViewChangeHoldNonFullscreen && mMainView->leftFrame()->isVisible() ) 643 if ( KOPrefs::instance()->mViewChangeHoldNonFullscreen && mMainView->leftFrame()->isVisible() )
637 full = false; 644 full = false;
638 else 645 else
639 full = true; 646 full = true;
640 } 647 }
641 mMainView->dateNavigator()->selectWeek(); 648 mMainView->dateNavigator()->selectWeek();
642 showView(mMonthView, full ); 649 showView(mMonthView, full );
643} 650}
644 651
645void KOViewManager::showMonth( const QDate & date ) 652void KOViewManager::showMonth( const QDate & date )
646{ 653{
647 mMainView->dateNavigator()->blockSignals( true ); 654 mMainView->dateNavigator()->blockSignals( true );
648 mMainView->dateNavigator()->selectDate( date ); 655 mMainView->dateNavigator()->selectDate( date );
649 mMainView->dateNavigator()->blockSignals( false ); 656 mMainView->dateNavigator()->blockSignals( false );
650 showMonthView(); 657 showMonthView();
651} 658}
652void KOViewManager::showMonthView() 659void KOViewManager::showMonthView()
653 { 660 {
654 661
655 createMonthView(); 662 createMonthView();
656 globalFlagBlockAgenda = 1; 663 globalFlagBlockAgenda = 1;
657 //mFlagShowNextxDays = false; 664 //mFlagShowNextxDays = false;
658 bool full = true; 665 bool full = true;
659 if ( mCurrentView == mMonthView) 666 if ( mCurrentView == mMonthView)
660 full = mMainView->leftFrame()->isVisible(); 667 full = mMainView->leftFrame()->isVisible();
661 // if(mMonthView == mCurrentView) return; 668 // if(mMonthView == mCurrentView) return;
662 if ( KOPrefs::instance()->mMonthViewWeek ) { 669 if ( KOPrefs::instance()->mMonthViewWeek ) {
663 mMonthView->switchView(); 670 mMonthView->switchView();
664 if ( KOPrefs::instance()->mViewChangeHoldNonFullscreen && mMainView->leftFrame()->isVisible() ) 671 if ( KOPrefs::instance()->mViewChangeHoldNonFullscreen && mMainView->leftFrame()->isVisible() )
665 full = false; 672 full = false;
666 else 673 else
667 full = true; 674 full = true;
668 } 675 }
669 mMainView->dateNavigator()->selectMonth(); 676 mMainView->dateNavigator()->selectMonth();
670 677
671 showView(mMonthView, full ); 678 showView(mMonthView, full );
672 679
673} 680}
674 681
675void KOViewManager::showTodoView() 682void KOViewManager::showTodoView()
676{ 683{
677 //mFlagShowNextxDays = false; 684 //mFlagShowNextxDays = false;
678 if ( !mTodoView ) { 685 if ( !mTodoView ) {
679 mTodoView = new KOTodoView( mMainView->calendar(), mMainView->viewStack(), 686 mTodoView = new KOTodoView( mMainView->calendar(), mMainView->viewStack(),
680 "KOViewManager::TodoView" ); 687 "KOViewManager::TodoView" );
681 688
682 addView( mTodoView ); 689 addView( mTodoView );
683 // QPEApplication::setStylusOperation( mTodoView, QPEApplication::RightOnHold ); 690 // QPEApplication::setStylusOperation( mTodoView, QPEApplication::RightOnHold );
684 691
685 // SIGNALS/SLOTS FOR TODO VIEW 692 // SIGNALS/SLOTS FOR TODO VIEW
686 connect( mTodoView, SIGNAL( newTodoSignal() ), 693 connect( mTodoView, SIGNAL( newTodoSignal() ),
687 mMainView, SLOT( newTodo() ) ); 694 mMainView, SLOT( newTodo() ) );
688 connect( mTodoView, SIGNAL( newSubTodoSignal( Todo * ) ), 695 connect( mTodoView, SIGNAL( newSubTodoSignal( Todo * ) ),
689 mMainView, SLOT( newSubTodo( Todo *) ) ); 696 mMainView, SLOT( newSubTodo( Todo *) ) );
690 connect( mTodoView, SIGNAL( showTodoSignal( Todo *) ), 697 connect( mTodoView, SIGNAL( showTodoSignal( Todo *) ),
691 mMainView, SLOT( showTodo( Todo * ) ) ); 698 mMainView, SLOT( showTodo( Todo * ) ) );
692 connect( mTodoView, SIGNAL( editTodoSignal( Todo * ) ), 699 connect( mTodoView, SIGNAL( editTodoSignal( Todo * ) ),
693 mMainView, SLOT( editTodo( Todo * ) ) ); 700 mMainView, SLOT( editTodo( Todo * ) ) );
694 connect( mTodoView, SIGNAL( deleteTodoSignal( Todo * ) ), 701 connect( mTodoView, SIGNAL( deleteTodoSignal( Todo * ) ),
695 mMainView, SLOT( deleteTodo( Todo * ) ) ); 702 mMainView, SLOT( deleteTodo( Todo * ) ) );
696 connect( mTodoView, SIGNAL( purgeCompletedSignal() ), 703 connect( mTodoView, SIGNAL( purgeCompletedSignal() ),
697 mMainView, SLOT( purgeCompleted() ) ); 704 mMainView, SLOT( purgeCompleted() ) );
698 705
699 connect( mTodoView, SIGNAL( incidenceSelected( Incidence * ) ), 706 connect( mTodoView, SIGNAL( incidenceSelected( Incidence * ) ),
700 mMainView, SLOT( processMainViewSelection( Incidence * ) ) ); 707 mMainView, SLOT( processMainViewSelection( Incidence * ) ) );
701 708
702 connect( mMainView, SIGNAL( configChanged() ), mTodoView, 709 connect( mMainView, SIGNAL( configChanged() ), mTodoView,
703 SLOT( updateConfig() ) ); 710 SLOT( updateConfig() ) );
704 connect( mMainView, SIGNAL( todoModified( Todo *, int )), mTodoView, 711 connect( mMainView, SIGNAL( todoModified( Todo *, int )), mTodoView,
705 SLOT( updateTodo( Todo *, int ) ) ); 712 SLOT( updateTodo( Todo *, int ) ) );
706 connect( mTodoView, SIGNAL( todoModifiedSignal( Todo *, int ) ), 713 connect( mTodoView, SIGNAL( todoModifiedSignal( Todo *, int ) ),
707 mMainView, SIGNAL ( todoModified( Todo *, int ) ) ); 714 mMainView, SIGNAL ( todoModified( Todo *, int ) ) );
708 connect( mTodoView, SIGNAL( cloneTodoSignal( Incidence * ) ), 715 connect( mTodoView, SIGNAL( cloneTodoSignal( Incidence * ) ),
709 mMainView, SLOT ( cloneIncidence( Incidence * ) ) ); 716 mMainView, SLOT ( cloneIncidence( Incidence * ) ) );
710 connect( mTodoView, SIGNAL( cancelTodoSignal( Incidence * ) ), 717 connect( mTodoView, SIGNAL( cancelTodoSignal( Incidence * ) ),
711 mMainView, SLOT ( cancelIncidence( Incidence * ) ) ); 718 mMainView, SLOT ( cancelIncidence( Incidence * ) ) );
712 connect( mTodoView, SIGNAL( unparentTodoSignal( Todo * ) ), 719 connect( mTodoView, SIGNAL( unparentTodoSignal( Todo * ) ),
713 mMainView, SLOT ( todo_unsub( Todo * ) ) ); 720 mMainView, SLOT ( todo_unsub( Todo * ) ) );
714 connect( mTodoView, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ), 721 connect( mTodoView, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ),
715 mMainView, SLOT ( todo_resub( Todo *, Todo *) ) ); 722 mMainView, SLOT ( todo_resub( Todo *, Todo *) ) );
716 connect( mTodoView, SIGNAL( moveTodoSignal( Incidence * ) ), 723 connect( mTodoView, SIGNAL( moveTodoSignal( Incidence * ) ),
717 mMainView, SLOT ( moveIncidence( Incidence * ) ) ); 724 mMainView, SLOT ( moveIncidence( Incidence * ) ) );
718 connect( mTodoView, SIGNAL( beamTodoSignal( Incidence * ) ), 725 connect( mTodoView, SIGNAL( beamTodoSignal( Incidence * ) ),
719 mMainView, SLOT ( beamIncidence( Incidence * ) ) ); 726 mMainView, SLOT ( beamIncidence( Incidence * ) ) );
720 KConfig *config = KOGlobals::config(); 727 KConfig *config = KOGlobals::config();
721 mTodoView->restoreLayout(config,"Todo View"); 728 mTodoView->restoreLayout(config,"Todo View");
722 mTodoView->setNavigator( mMainView->dateNavigator() ); 729 mTodoView->setNavigator( mMainView->dateNavigator() );
723 } 730 }
724 731
725 globalFlagBlockAgenda = 1; 732 globalFlagBlockAgenda = 1;
726 showView( mTodoView, true ); 733 showView( mTodoView, true );
727 734
728} 735}
729 736
730void KOViewManager::showJournalView() 737void KOViewManager::showJournalView()
731{ 738{
732 //mFlagShowNextxDays = false; 739 //mFlagShowNextxDays = false;
733 if (!mJournalView) { 740 if (!mJournalView) {
734 mJournalView = new KOJournalView(mMainView->calendar(),mMainView->viewStack(), 741 mJournalView = new KOJournalView(mMainView->calendar(),mMainView->viewStack(),
735 "KOViewManager::JournalView"); 742 "KOViewManager::JournalView");
736 connect( mMainView, SIGNAL( configChanged() ), mJournalView, 743 connect( mMainView, SIGNAL( configChanged() ), mJournalView,
737 SLOT( updateConfig() ) ); 744 SLOT( updateConfig() ) );
738 connect(mJournalView, SIGNAL(deleteJournal(Journal *) ), mMainView,SLOT(deleteJournal(Journal *)) ); 745 connect(mJournalView, SIGNAL(deleteJournal(Journal *) ), mMainView,SLOT(deleteJournal(Journal *)) );
739 addView(mJournalView); 746 addView(mJournalView);
740 } 747 }
741 748
742 showView(mJournalView); 749 showView(mJournalView);
743 mMainView->dateNavigator()->selectDates( 1 ); 750 mMainView->dateNavigator()->selectDates( 1 );
744} 751}
745 752
746void KOViewManager::showTimeSpanView() 753void KOViewManager::showTimeSpanView()
747{ 754{
748 //mFlagShowNextxDays = false; 755 //mFlagShowNextxDays = false;
749 if (!mTimeSpanView) { 756 if (!mTimeSpanView) {
750 mTimeSpanView = new KOTimeSpanView(mMainView->calendar(),mMainView->viewStack(), 757 mTimeSpanView = new KOTimeSpanView(mMainView->calendar(),mMainView->viewStack(),
751 "KOViewManager::TimeSpanView"); 758 "KOViewManager::TimeSpanView");
752 addView(mTimeSpanView); 759 addView(mTimeSpanView);
753 760
754 mTimeSpanView->readSettings(); 761 mTimeSpanView->readSettings();
755 } 762 }
756 763
757 showView(mTimeSpanView); 764 showView(mTimeSpanView);
758} 765}
759 766
760Incidence *KOViewManager::currentSelection() 767Incidence *KOViewManager::currentSelection()
761{ 768{
762 if (!mCurrentView) return 0; 769 if (!mCurrentView) return 0;
763 if ( mCurrentView == mListView ) { 770 if ( mCurrentView == mListView ) {
764 if ( mListView->currentItem() ) 771 if ( mListView->currentItem() )
765 return mListView->currentItem(); 772 return mListView->currentItem();
766 } 773 }
767 return mCurrentView->selectedIncidences().first(); 774 return mCurrentView->selectedIncidences().first();
768} 775}
769 776
770QDate KOViewManager::currentSelectionDate() 777QDate KOViewManager::currentSelectionDate()
771{ 778{
772 QDate qd; 779 QDate qd;
773 if (mCurrentView) { 780 if (mCurrentView) {
774 DateList qvl = mCurrentView->selectedDates(); 781 DateList qvl = mCurrentView->selectedDates();
775 if (!qvl.isEmpty()) qd = qvl.first(); 782 if (!qvl.isEmpty()) qd = qvl.first();
776 } 783 }
777 return qd; 784 return qd;
778} 785}
779 786
780void KOViewManager::addView(KOrg::BaseView *view) 787void KOViewManager::addView(KOrg::BaseView *view)
781{ 788{
782#if QT_VERSION >= 0x030000 789#if QT_VERSION >= 0x030000
783 mMainView->viewStack()->addWidget( view ); 790 mMainView->viewStack()->addWidget( view );
784#else 791#else
785 mMainView->viewStack()->addWidget( view, 1 ); 792 mMainView->viewStack()->addWidget( view, 1 );
786#endif 793#endif
787} 794}
788 795
789void KOViewManager::setDocumentId( const QString &id ) 796void KOViewManager::setDocumentId( const QString &id )
790{ 797{
791 if (mTodoView) mTodoView->setDocumentId( id ); 798 if (mTodoView) mTodoView->setDocumentId( id );
792} 799}
diff --git a/korganizer/koviewmanager.h b/korganizer/koviewmanager.h
index d829f14..1d565a6 100644
--- a/korganizer/koviewmanager.h
+++ b/korganizer/koviewmanager.h
@@ -1,122 +1,123 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001 3 Copyright (c) 2001
4 Cornelius Schumacher <schumacher@kde.org> 4 Cornelius Schumacher <schumacher@kde.org>
5 5
6 This program is free software; you can redistribute it and/or modify 6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by 7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or 8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version. 9 (at your option) any later version.
10 10
11 This program is distributed in the hope that it will be useful, 11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
14 GNU General Public License for more details. 14 GNU General Public License for more details.
15 15
16 You should have received a copy of the GNU General Public License 16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software 17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 19
20 As a special exception, permission is given to link this program 20 As a special exception, permission is given to link this program
21 with any edition of Qt, and distribute the resulting executable, 21 with any edition of Qt, and distribute the resulting executable,
22 without including the source code for Qt in the source distribution. 22 without including the source code for Qt in the source distribution.
23*/ 23*/
24#ifndef KOVIEWMANAGER_H 24#ifndef KOVIEWMANAGER_H
25#define KOVIEWMANAGER_H 25#define KOVIEWMANAGER_H
26 26
27#include <qobject.h> 27#include <qobject.h>
28 28
29#include <korganizer/baseview.h> 29#include <korganizer/baseview.h>
30 30
31class CalendarView; 31class CalendarView;
32 32
33class KOListView; 33class KOListView;
34class KOAgendaView; 34class KOAgendaView;
35class KOMonthView; 35class KOMonthView;
36class KOTimeSpanView; 36class KOTimeSpanView;
37class KOTodoView; 37class KOTodoView;
38class KOWhatsNextView; 38class KOWhatsNextView;
39class KOJournalView; 39class KOJournalView;
40 40
41using namespace KCal; 41using namespace KCal;
42 42
43/** 43/**
44 This class manages the views of the calendar. It owns the objects and handles 44 This class manages the views of the calendar. It owns the objects and handles
45 creation and selection. 45 creation and selection.
46*/ 46*/
47class KOViewManager : public QObject 47class KOViewManager : public QObject
48{ 48{
49 Q_OBJECT 49 Q_OBJECT
50 public: 50 public:
51 KOViewManager( CalendarView * ); 51 KOViewManager( CalendarView * );
52 virtual ~KOViewManager(); 52 virtual ~KOViewManager();
53 53
54 /** changes the view to be the currently selected view */ 54 /** changes the view to be the currently selected view */
55 void showView(KOrg::BaseView *, bool fullScreen = false ); 55 void showView(KOrg::BaseView *, bool fullScreen = false );
56 void updateWNview(); 56 void updateWNview();
57 void readSettings(KConfig *config); 57 void readSettings(KConfig *config);
58 void writeSettings(KConfig *config); 58 void writeSettings(KConfig *config);
59 bool showsNextDays(); 59 bool showsNextDays();
60 /** Read which view was shown last from config file */ 60 /** Read which view was shown last from config file */
61 void readCurrentView(KConfig *); 61 void readCurrentView(KConfig *);
62 /** Write which view is currently shown to config file */ 62 /** Write which view is currently shown to config file */
63 void writeCurrentView(KConfig *); 63 void writeCurrentView(KConfig *);
64 64
65 KOrg::BaseView *currentView(); 65 KOrg::BaseView *currentView();
66 66
67 void setDocumentId( const QString & ); 67 void setDocumentId( const QString & );
68 68
69 void updateView( const QDate &start, const QDate &end ); 69 void updateView( const QDate &start, const QDate &end );
70 70
71 void raiseCurrentView( bool fullScreen = false , bool updateView = false); 71 void raiseCurrentView( bool fullScreen = false , bool updateView = false);
72 72
73 void addView(KOrg::BaseView *); 73 void addView(KOrg::BaseView *);
74 74
75 Incidence *currentSelection(); 75 Incidence *currentSelection();
76 QDate currentSelectionDate(); 76 QDate currentSelectionDate();
77 77
78 KOAgendaView *agendaView() const { return mAgendaView; } 78 KOAgendaView *agendaView() const { return mAgendaView; }
79 79
80 signals: 80 signals:
81 void printWNV(); 81 void printWNV();
82 void signalFullScreen( bool ); 82 void signalFullScreen( bool );
83 void signalAgendaView( bool ); 83 void signalAgendaView( bool );
84 public slots: 84 public slots:
85 void slotprintWNV();
85 void showNextView(); 86 void showNextView();
86 void showMonth( const QDate & ); 87 void showMonth( const QDate & );
87 void showDateView( int, QDate ); 88 void showDateView( int, QDate );
88 void updateView(); 89 void updateView();
89 void showWhatsNextView(); 90 void showWhatsNextView();
90 void showListView(); 91 void showListView();
91 void showAgendaView( bool fullScreen = false ); 92 void showAgendaView( bool fullScreen = false );
92 void showDayView(); 93 void showDayView();
93 void showWorkWeekView(); 94 void showWorkWeekView();
94 void showWeekView(); 95 void showWeekView();
95 void showNextXView(); 96 void showNextXView();
96 void showMonthView(); 97 void showMonthView();
97 void showMonthViewWeek(); 98 void showMonthViewWeek();
98 void showTodoView(); 99 void showTodoView();
99 void showJournalView(); 100 void showJournalView();
100 void showTimeSpanView(); 101 void showTimeSpanView();
101 102
102 private: 103 private:
103 void createMonthView(); 104 void createMonthView();
104 CalendarView *mMainView; 105 CalendarView *mMainView;
105 106
106 int mCurrentAgendaView; 107 int mCurrentAgendaView;
107 KOAgendaView *mAgendaView; 108 KOAgendaView *mAgendaView;
108 KOListView *mListView; 109 KOListView *mListView;
109 KOMonthView *mMonthView; 110 KOMonthView *mMonthView;
110 KOTodoView *mTodoView; 111 KOTodoView *mTodoView;
111 KOWhatsNextView *mWhatsNextView; 112 KOWhatsNextView *mWhatsNextView;
112 KOJournalView *mJournalView; 113 KOJournalView *mJournalView;
113 KOTimeSpanView *mTimeSpanView; 114 KOTimeSpanView *mTimeSpanView;
114 115
115 KOrg::BaseView *mCurrentView; // currently active event view 116 KOrg::BaseView *mCurrentView; // currently active event view
116 117
117 int mAgendaViewMode; 118 int mAgendaViewMode;
118 bool mFlagShowNextxDays; 119 bool mFlagShowNextxDays;
119 120
120}; 121};
121 122
122#endif 123#endif
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index a4e0834..ad1c0cd 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -1,2019 +1,2031 @@
1#include <stdlib.h> 1#include <stdlib.h>
2 2
3#include <qaction.h> 3#include <qaction.h>
4#include <qpopupmenu.h> 4#include <qpopupmenu.h>
5#include <qpainter.h> 5#include <qpainter.h>
6#include <qwhatsthis.h> 6#include <qwhatsthis.h>
7#include <qpushbutton.h> 7#include <qpushbutton.h>
8#include <qmessagebox.h> 8#include <qmessagebox.h>
9#include <qlineedit.h> 9#include <qlineedit.h>
10#include <qtextcodec.h> 10#include <qtextcodec.h>
11#include <qfile.h> 11#include <qfile.h>
12#include <qdir.h> 12#include <qdir.h>
13#include <qapp.h> 13#include <qapp.h>
14#include <qfileinfo.h> 14#include <qfileinfo.h>
15#include <qlabel.h> 15#include <qlabel.h>
16#include <qspinbox.h> 16#include <qspinbox.h>
17#include <qcheckbox.h> 17#include <qcheckbox.h>
18#include <qmap.h> 18#include <qmap.h>
19#include <qwmatrix.h> 19#include <qwmatrix.h>
20#include <qtextbrowser.h> 20#include <qtextbrowser.h>
21#include <qtextstream.h> 21#include <qtextstream.h>
22#ifndef DESKTOP_VERSION 22#ifndef DESKTOP_VERSION
23#include <qpe/global.h> 23#include <qpe/global.h>
24#include <qpe/qpemenubar.h> 24#include <qpe/qpemenubar.h>
25#include <qpe/qpetoolbar.h> 25#include <qpe/qpetoolbar.h>
26#include <qpe/resource.h> 26#include <qpe/resource.h>
27#include <qpe/qpeapplication.h> 27#include <qpe/qpeapplication.h>
28#include <qtopia/alarmserver.h> 28#include <qtopia/alarmserver.h>
29#include <qtopia/qcopenvelope_qws.h> 29#include <qtopia/qcopenvelope_qws.h>
30#include <unistd.h> // for sleep 30#include <unistd.h> // for sleep
31#else 31#else
32#include <qmenubar.h> 32#include <qmenubar.h>
33#include <qtoolbar.h> 33#include <qtoolbar.h>
34#include <qapplication.h> 34#include <qapplication.h>
35//#include <resource.h> 35//#include <resource.h>
36 36
37#endif 37#endif
38#include <libkcal/calendarlocal.h> 38#include <libkcal/calendarlocal.h>
39#include <libkcal/todo.h> 39#include <libkcal/todo.h>
40#include <libkcal/phoneformat.h> 40#include <libkcal/phoneformat.h>
41#include <libkdepim/ksyncprofile.h> 41#include <libkdepim/ksyncprofile.h>
42#include <libkdepim/phoneaccess.h> 42#include <libkdepim/phoneaccess.h>
43#include <libkcal/kincidenceformatter.h> 43#include <libkcal/kincidenceformatter.h>
44#include <libkdepim/kpimglobalprefs.h> 44#include <libkdepim/kpimglobalprefs.h>
45 45
46#include "calendarview.h" 46#include "calendarview.h"
47#include "koviewmanager.h" 47#include "koviewmanager.h"
48#include "datenavigator.h" 48#include "datenavigator.h"
49#include "koagendaview.h" 49#include "koagendaview.h"
50#include "koagenda.h" 50#include "koagenda.h"
51#include "kodialogmanager.h" 51#include "kodialogmanager.h"
52#include "kdialogbase.h" 52#include "kdialogbase.h"
53#include "kapplication.h" 53#include "kapplication.h"
54#include "kofilterview.h" 54#include "kofilterview.h"
55#include "kstandarddirs.h" 55#include "kstandarddirs.h"
56#include "koprefs.h" 56#include "koprefs.h"
57#include "kfiledialog.h" 57#include "kfiledialog.h"
58#include "koglobals.h" 58#include "koglobals.h"
59#include "kglobal.h" 59#include "kglobal.h"
60#include "ktoolbar.h" 60#include "ktoolbar.h"
61#include "klocale.h" 61#include "klocale.h"
62#include "kconfig.h" 62#include "kconfig.h"
63#include "simplealarmclient.h" 63#include "simplealarmclient.h"
64#include "externalapphandler.h" 64#include "externalapphandler.h"
65 65
66using namespace KCal; 66using namespace KCal;
67#ifndef _WIN32_ 67#ifndef _WIN32_
68#include <unistd.h> 68#include <unistd.h>
69#else 69#else
70#ifdef _OL_IMPORT_ 70#ifdef _OL_IMPORT_
71#include "koimportoldialog.h" 71#include "koimportoldialog.h"
72#endif 72#endif
73#endif 73#endif
74#include "mainwindow.h" 74#include "mainwindow.h"
75 75
76 76
77class KOex2phonePrefs : public QDialog 77class KOex2phonePrefs : public QDialog
78{ 78{
79 public: 79 public:
80 KOex2phonePrefs( QWidget *parent=0, const char *name=0 ) : 80 KOex2phonePrefs( QWidget *parent=0, const char *name=0 ) :
81 QDialog( parent, name, true ) 81 QDialog( parent, name, true )
82 { 82 {
83 setCaption( i18n("Export to phone options") ); 83 setCaption( i18n("Export to phone options") );
84 QVBoxLayout* lay = new QVBoxLayout( this ); 84 QVBoxLayout* lay = new QVBoxLayout( this );
85 lay->setSpacing( 3 ); 85 lay->setSpacing( 3 );
86 lay->setMargin( 3 ); 86 lay->setMargin( 3 );
87 QLabel *lab; 87 QLabel *lab;
88 lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) ); 88 lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) );
89 lab->setAlignment (AlignHCenter ); 89 lab->setAlignment (AlignHCenter );
90 QHBox* temphb; 90 QHBox* temphb;
91 temphb = new QHBox( this ); 91 temphb = new QHBox( this );
92 new QLabel( i18n("I/O device: "), temphb ); 92 new QLabel( i18n("I/O device: "), temphb );
93 mPhoneDevice = new QLineEdit( temphb); 93 mPhoneDevice = new QLineEdit( temphb);
94 lay->addWidget( temphb ); 94 lay->addWidget( temphb );
95 temphb = new QHBox( this ); 95 temphb = new QHBox( this );
96 new QLabel( i18n("Connection: "), temphb ); 96 new QLabel( i18n("Connection: "), temphb );
97 mPhoneConnection = new QLineEdit( temphb); 97 mPhoneConnection = new QLineEdit( temphb);
98 lay->addWidget( temphb ); 98 lay->addWidget( temphb );
99 temphb = new QHBox( this ); 99 temphb = new QHBox( this );
100 new QLabel( i18n("Model(opt.): "), temphb ); 100 new QLabel( i18n("Model(opt.): "), temphb );
101 mPhoneModel = new QLineEdit( temphb); 101 mPhoneModel = new QLineEdit( temphb);
102 lay->addWidget( temphb ); 102 lay->addWidget( temphb );
103 mWriteBackFuture= new QCheckBox( i18n("Write back events in future only"), this ); 103 mWriteBackFuture= new QCheckBox( i18n("Write back events in future only"), this );
104 mWriteBackFuture->setChecked( true ); 104 mWriteBackFuture->setChecked( true );
105 lay->addWidget( mWriteBackFuture ); 105 lay->addWidget( mWriteBackFuture );
106 temphb = new QHBox( this ); 106 temphb = new QHBox( this );
107 new QLabel( i18n("Max. weeks in future: ") , temphb ); 107 new QLabel( i18n("Max. weeks in future: ") , temphb );
108 mWriteBackFutureWeeks= new QSpinBox(1,104, 1, temphb); 108 mWriteBackFutureWeeks= new QSpinBox(1,104, 1, temphb);
109 mWriteBackFutureWeeks->setValue( 8 ); 109 mWriteBackFutureWeeks->setValue( 8 );
110 lay->addWidget( temphb ); 110 lay->addWidget( temphb );
111 lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ntodo/calendar data on phone!"), this ) ); 111 lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ntodo/calendar data on phone!"), this ) );
112 lab->setAlignment (AlignHCenter ); 112 lab->setAlignment (AlignHCenter );
113 QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this ); 113 QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this );
114 lay->addWidget( ok ); 114 lay->addWidget( ok );
115 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 115 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
116 lay->addWidget( cancel ); 116 lay->addWidget( cancel );
117 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 117 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
118 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 118 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
119 resize( 220, 240 ); 119 resize( 220, 240 );
120 qApp->processEvents(); 120 qApp->processEvents();
121 int dw = QApplication::desktop()->width(); 121 int dw = QApplication::desktop()->width();
122 int dh = QApplication::desktop()->height(); 122 int dh = QApplication::desktop()->height();
123 move( (dw-width())/2, (dh - height() )/2 ); 123 move( (dw-width())/2, (dh - height() )/2 );
124 } 124 }
125 125
126public: 126public:
127 QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel; 127 QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel;
128 QCheckBox* mWriteBackFuture; 128 QCheckBox* mWriteBackFuture;
129 QSpinBox* mWriteBackFutureWeeks; 129 QSpinBox* mWriteBackFutureWeeks;
130}; 130};
131 131
132int globalFlagBlockStartup; 132int globalFlagBlockStartup;
133MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) : 133MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) :
134 QMainWindow( parent, name ) 134 QMainWindow( parent, name )
135{ 135{
136 136
137 mClosed = false; 137 mClosed = false;
138 //QString confFile = KStandardDirs::appDir() + "config/korganizerrc"; 138 //QString confFile = KStandardDirs::appDir() + "config/korganizerrc";
139 QString confFile = locateLocal("config","korganizerrc"); 139 QString confFile = locateLocal("config","korganizerrc");
140 QFileInfo finf ( confFile ); 140 QFileInfo finf ( confFile );
141 bool showWarning = !finf.exists(); 141 bool showWarning = !finf.exists();
142 setIcon(SmallIcon( "ko24" ) ); 142 setIcon(SmallIcon( "ko24" ) );
143 mBlockAtStartup = true; 143 mBlockAtStartup = true;
144 mFlagKeyPressed = false; 144 mFlagKeyPressed = false;
145 setCaption("KO/Pi"); 145 setCaption("KO/Pi");
146 KOPrefs *p = KOPrefs::instance(); 146 KOPrefs *p = KOPrefs::instance();
147 KPimGlobalPrefs::instance()->setGlobalConfig(); 147 KPimGlobalPrefs::instance()->setGlobalConfig();
148 if ( p->mHourSize > 22 ) 148 if ( p->mHourSize > 22 )
149 p->mHourSize = 22; 149 p->mHourSize = 22;
150 QMainWindow::ToolBarDock tbd; 150 QMainWindow::ToolBarDock tbd;
151 if ( p->mToolBarHor ) { 151 if ( p->mToolBarHor ) {
152 if ( p->mToolBarUp ) 152 if ( p->mToolBarUp )
153 tbd = Bottom; 153 tbd = Bottom;
154 else 154 else
155 tbd = Top; 155 tbd = Top;
156 } 156 }
157 else { 157 else {
158 if ( p->mToolBarUp ) 158 if ( p->mToolBarUp )
159 tbd = Right; 159 tbd = Right;
160 else 160 else
161 tbd = Left; 161 tbd = Left;
162 } 162 }
163 if ( KOPrefs::instance()->mUseAppColors ) 163 if ( KOPrefs::instance()->mUseAppColors )
164 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true ); 164 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true );
165 globalFlagBlockStartup = 1; 165 globalFlagBlockStartup = 1;
166 iconToolBar = new QPEToolBar( this ); 166 iconToolBar = new QPEToolBar( this );
167 addToolBar (iconToolBar , tbd ); 167 addToolBar (iconToolBar , tbd );
168 168
169 if ( KOPrefs::instance()->mShowIconFilter ) { 169 if ( KOPrefs::instance()->mShowIconFilter ) {
170 if ( p->mToolBarHorF ) { 170 if ( p->mToolBarHorF ) {
171 if ( p->mToolBarUpF ) 171 if ( p->mToolBarUpF )
172 tbd = Bottom; 172 tbd = Bottom;
173 else 173 else
174 tbd = Top; 174 tbd = Top;
175 } 175 }
176 else { 176 else {
177 if ( p->mToolBarUpF ) 177 if ( p->mToolBarUpF )
178 tbd = Right; 178 tbd = Right;
179 else 179 else
180 tbd = Left; 180 tbd = Left;
181 } 181 }
182 filterToolBar = new QPEToolBar ( this ); 182 filterToolBar = new QPEToolBar ( this );
183 filterMenubar = new QPEMenuBar( filterToolBar ); 183 filterMenubar = new QPEMenuBar( filterToolBar );
184 QFontMetrics fm ( filterMenubar->font() ); 184 QFontMetrics fm ( filterMenubar->font() );
185 185
186 filterPopupMenu = new QPopupMenu( this ); 186 filterPopupMenu = new QPopupMenu( this );
187 filterMenubar->insertItem( i18n("No Filter"), filterPopupMenu,0 ); 187 filterMenubar->insertItem( i18n("No Filter"), filterPopupMenu,0 );
188 filterMenubar->setFixedWidth( fm.width( i18n("No Filter")+"Ax" ) ); 188 QString addTest = "Ax";
189#ifdef DESKTOP_VERSION
190 addTest = "AAAx";
191#endif
192 filterMenubar->setFixedWidth( fm.width( i18n("No Filter")+addTest ) );
189 addToolBar (filterToolBar , tbd ); 193 addToolBar (filterToolBar , tbd );
190 connect ( filterPopupMenu , SIGNAL( activated ( int ) ), this, SLOT (selectFilterPopup( int ) ) ); 194 connect ( filterPopupMenu , SIGNAL( activated ( int ) ), this, SLOT (selectFilterPopup( int ) ) );
191 connect ( filterPopupMenu , SIGNAL( aboutToShow() ), this, SLOT (fillFilterMenuPopup() ) ); 195 connect ( filterPopupMenu , SIGNAL( aboutToShow() ), this, SLOT (fillFilterMenuPopup() ) );
192 } else { 196 } else {
193 filterToolBar = 0; 197 filterToolBar = 0;
194 filterMenubar = 0; 198 filterMenubar = 0;
195 filterPopupMenu = 0; 199 filterPopupMenu = 0;
196 } 200 }
197 if ( p->mShowIconOnetoolbar ) { 201 if ( p->mShowIconOnetoolbar ) {
198 viewToolBar = iconToolBar ; 202 viewToolBar = iconToolBar ;
199 navigatorToolBar = iconToolBar ; 203 navigatorToolBar = iconToolBar ;
200 } else { 204 } else {
201 if ( p->mToolBarHorV ) { 205 if ( p->mToolBarHorV ) {
202 if ( p->mToolBarUpV ) 206 if ( p->mToolBarUpV )
203 tbd = Bottom; 207 tbd = Bottom;
204 else 208 else
205 tbd = Top; 209 tbd = Top;
206 } 210 }
207 else { 211 else {
208 if ( p->mToolBarUpV ) 212 if ( p->mToolBarUpV )
209 tbd = Right; 213 tbd = Right;
210 else 214 else
211 tbd = Left; 215 tbd = Left;
212 } 216 }
213 viewToolBar = new QPEToolBar( this ); 217 viewToolBar = new QPEToolBar( this );
214 addToolBar (viewToolBar , tbd ); 218 addToolBar (viewToolBar , tbd );
215 if ( p->mToolBarHorN ) { 219 if ( p->mToolBarHorN ) {
216 if ( p->mToolBarUpN ) 220 if ( p->mToolBarUpN )
217 tbd = Bottom; 221 tbd = Bottom;
218 else 222 else
219 tbd = Top; 223 tbd = Top;
220 } 224 }
221 else { 225 else {
222 if ( p->mToolBarUpN ) 226 if ( p->mToolBarUpN )
223 tbd = Right; 227 tbd = Right;
224 else 228 else
225 tbd = Left; 229 tbd = Left;
226 } 230 }
227 navigatorToolBar = new QPEToolBar( this ); 231 navigatorToolBar = new QPEToolBar( this );
228 addToolBar (navigatorToolBar , tbd ); 232 addToolBar (navigatorToolBar , tbd );
229 } 233 }
230 234
231 235
232 236
233 mCalendarModifiedFlag = false; 237 mCalendarModifiedFlag = false;
234 QLabel* splash = new QLabel(i18n("KO/Pi is starting ... "), this ); 238 QLabel* splash = new QLabel(i18n("KO/Pi is starting ... "), this );
235 splash->setAlignment ( AlignCenter ); 239 splash->setAlignment ( AlignCenter );
236 setCentralWidget( splash ); 240 setCentralWidget( splash );
237#ifndef DESKTOP_VERSION 241#ifndef DESKTOP_VERSION
238 showMaximized(); 242 showMaximized();
239#endif 243#endif
240 244
241 //qDebug("Mainwidget x %d y %d w %d h %d", x(), y(), width(), height ()); 245 //qDebug("Mainwidget x %d y %d w %d h %d", x(), y(), width(), height ());
242 setDefaultPreferences(); 246 setDefaultPreferences();
243 mCalendar = new CalendarLocal(); 247 mCalendar = new CalendarLocal();
244 mView = new CalendarView( mCalendar, this,"mCalendar " ); 248 mView = new CalendarView( mCalendar, this,"mCalendar " );
245 mView->hide(); 249 mView->hide();
246 //mView->resize(splash->size() ); 250 //mView->resize(splash->size() );
247 initActions(); 251 initActions();
248 mSyncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)mView, KSyncManager::KOPI, KOPrefs::instance(), syncMenu); 252 mSyncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)mView, KSyncManager::KOPI, KOPrefs::instance(), syncMenu);
249 mSyncManager->setBlockSave(false); 253 mSyncManager->setBlockSave(false);
250 mView->setSyncManager(mSyncManager); 254 mView->setSyncManager(mSyncManager);
251#ifndef DESKTOP_VERSION 255#ifndef DESKTOP_VERSION
252 iconToolBar->show(); 256 iconToolBar->show();
253 qApp->processEvents(); 257 qApp->processEvents();
254#endif 258#endif
255 //qDebug("Splashwidget x %d y %d w %d h %d", splash-> x(), splash->y(), splash->width(),splash-> height ()); 259 //qDebug("Splashwidget x %d y %d w %d h %d", splash-> x(), splash->y(), splash->width(),splash-> height ());
256 int vh = height() ; 260 int vh = height() ;
257 int vw = width(); 261 int vw = width();
258 //qDebug("Toolbar hei %d ",iconToolBar->height() ); 262 //qDebug("Toolbar hei %d ",iconToolBar->height() );
259 if ( iconToolBar->orientation () == Qt:: Horizontal ) { 263 if ( iconToolBar->orientation () == Qt:: Horizontal ) {
260 vh -= iconToolBar->height(); 264 vh -= iconToolBar->height();
261 } else { 265 } else {
262 vw -= iconToolBar->height(); 266 vw -= iconToolBar->height();
263 } 267 }
264 //mView->setMaximumSize( splash->size() ); 268 //mView->setMaximumSize( splash->size() );
265 //mView->resize( splash->size() ); 269 //mView->resize( splash->size() );
266 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ()); 270 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ());
267 mView->readSettings(); 271 mView->readSettings();
268 bool newFile = false; 272 bool newFile = false;
269 if( !QFile::exists( defaultFileName() ) ) { 273 if( !QFile::exists( defaultFileName() ) ) {
270 QFileInfo finfo ( defaultFileName() ); 274 QFileInfo finfo ( defaultFileName() );
271 QString oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/Applications/korganizer/mycalendar.ics"); 275 QString oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/Applications/korganizer/mycalendar.ics");
272 qDebug("oldfile %s ", oldFile.latin1()); 276 qDebug("oldfile %s ", oldFile.latin1());
273 QString message = "You are starting KO/Pi for the\nfirst time after updating to a\nversion >= 1.9.1. The location of the\ndefault calendar file has changed.\nA mycalendar.ics file was detected\nat the old location.\nThis file will be loaded now\nand stored at the new location!\n(Config file location has changed, too!)\nPlease read menu Help-What's New!\n"; 277 QString message = "You are starting KO/Pi for the\nfirst time after updating to a\nversion >= 1.9.1. The location of the\ndefault calendar file has changed.\nA mycalendar.ics file was detected\nat the old location.\nThis file will be loaded now\nand stored at the new location!\n(Config file location has changed, too!)\nPlease read menu Help-What's New!\n";
274 finfo.setFile( oldFile ); 278 finfo.setFile( oldFile );
275 if (finfo.exists() ) { 279 if (finfo.exists() ) {
276 KMessageBox::information( this, message); 280 KMessageBox::information( this, message);
277 mView->openCalendar( oldFile ); 281 mView->openCalendar( oldFile );
278 qApp->processEvents(); 282 qApp->processEvents();
279 } else { 283 } else {
280 oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/korganizer/mycalendar.ics"); 284 oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/korganizer/mycalendar.ics");
281 finfo.setFile( oldFile ); 285 finfo.setFile( oldFile );
282 if (finfo.exists() ) { 286 if (finfo.exists() ) {
283 KMessageBox::information( this, message); 287 KMessageBox::information( this, message);
284 mView->openCalendar( oldFile ); 288 mView->openCalendar( oldFile );
285 qApp->processEvents(); 289 qApp->processEvents();
286 } 290 }
287 } 291 }
288 mView->saveCalendar( defaultFileName() ); 292 mView->saveCalendar( defaultFileName() );
289 newFile = true; 293 newFile = true;
290 } 294 }
291 295
292 QTime neededSaveTime = QDateTime::currentDateTime().time(); 296 QTime neededSaveTime = QDateTime::currentDateTime().time();
293 mView->openCalendar( defaultFileName() ); 297 mView->openCalendar( defaultFileName() );
294 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() ); 298 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() );
295 qDebug("KO: Calendar loading time: %d ms",msNeeded ); 299 qDebug("KO: Calendar loading time: %d ms",msNeeded );
296 300
297 if ( KPimGlobalPrefs::instance()->mPreferredLanguage != KOPrefs::instance()->mOldLoadedLanguage ) { 301 if ( KPimGlobalPrefs::instance()->mPreferredLanguage != KOPrefs::instance()->mOldLoadedLanguage ) {
298 KOPrefs::instance()->setAllDefaults(); 302 KOPrefs::instance()->setAllDefaults();
299 int count = mView->addCategories(); 303 int count = mView->addCategories();
300 } 304 }
301 processIncidenceSelection( 0 ); 305 processIncidenceSelection( 0 );
302 connect( mView, SIGNAL( incidenceSelected( Incidence * ) ), 306 connect( mView, SIGNAL( incidenceSelected( Incidence * ) ),
303 SLOT( processIncidenceSelection( Incidence * ) ) ); 307 SLOT( processIncidenceSelection( Incidence * ) ) );
304 connect( mView, SIGNAL( modifiedChanged( bool ) ), 308 connect( mView, SIGNAL( modifiedChanged( bool ) ),
305 SLOT( slotModifiedChanged( bool ) ) ); 309 SLOT( slotModifiedChanged( bool ) ) );
306 310
307 311
308 connect( mView, SIGNAL( tempDisableBR(bool) ), 312 connect( mView, SIGNAL( tempDisableBR(bool) ),
309 SLOT( disableBR(bool) ) ); 313 SLOT( disableBR(bool) ) );
310 connect( &mSaveTimer, SIGNAL( timeout() ), SLOT( save() ) ); 314 connect( &mSaveTimer, SIGNAL( timeout() ), SLOT( save() ) );
311 mView->setModified( false ); 315 mView->setModified( false );
312 mBlockAtStartup = false; 316 mBlockAtStartup = false;
313 mView->setModified( false ); 317 mView->setModified( false );
314 setCentralWidget( mView ); 318 setCentralWidget( mView );
315 globalFlagBlockStartup = 0; 319 globalFlagBlockStartup = 0;
316 mView->show(); 320 mView->show();
317 delete splash; 321 delete splash;
318 if ( newFile ) 322 if ( newFile )
319 mView->updateConfig(); 323 mView->updateConfig();
320 // qApp->processEvents(); 324 // qApp->processEvents();
321 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ()); 325 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ());
322 //fillSyncMenu(); 326 //fillSyncMenu();
323 327
324 328
325 connect(mSyncManager , SIGNAL( save() ), this, SLOT( save() ) ); 329 connect(mSyncManager , SIGNAL( save() ), this, SLOT( save() ) );
326 connect(mView , SIGNAL( save() ), this, SLOT( save() ) ); 330 connect(mView , SIGNAL( save() ), this, SLOT( save() ) );
327 connect(mView , SIGNAL( saveStopTimer() ), this, SLOT( saveStopTimer() ) ); 331 connect(mView , SIGNAL( saveStopTimer() ), this, SLOT( saveStopTimer() ) );
328 connect(mSyncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) ); 332 connect(mSyncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) );
329 connect(mSyncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) ); 333 connect(mSyncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) );
330 mSyncManager->setDefaultFileName( sentSyncFile()); 334 mSyncManager->setDefaultFileName( sentSyncFile());
331 connect ( syncMenu, SIGNAL( activated ( int ) ), mSyncManager, SLOT (slotSyncMenu( int ) ) ); 335 connect ( syncMenu, SIGNAL( activated ( int ) ), mSyncManager, SLOT (slotSyncMenu( int ) ) );
332 mSyncManager->fillSyncMenu(); 336 mSyncManager->fillSyncMenu();
333 337
334 338
335 339
336 mView->viewManager()->agendaView()->setStartHour( KOPrefs::instance()->mDayBegins ); 340 mView->viewManager()->agendaView()->setStartHour( KOPrefs::instance()->mDayBegins );
337 if ( showWarning ) { 341 if ( showWarning ) {
338 KMessageBox::information( this, 342 KMessageBox::information( this,
339 "You are starting KO/Pi for the first time.\nPlease read menu: Help-What's New,\nif you did an update!\nPlease choose your timezone in the \nConfigure Dialog TAB Time Zone!\nPlease choose your language\nin the TAB Locale!\nYou get the Configure Dialog\nvia Menu: Actions - Configure....\nClick OK to show the Configure Dialog!\n", "KO/Pi information"); 343 "You are starting KO/Pi for the first time.\nPlease read menu: Help-What's New,\nif you did an update!\nPlease choose your timezone in the \nConfigure Dialog TAB Time Zone!\nPlease choose your language\nin the TAB Locale!\nYou get the Configure Dialog\nvia Menu: Actions - Configure....\nClick OK to show the Configure Dialog!\n", "KO/Pi information");
340 qApp->processEvents(); 344 qApp->processEvents();
341 mView->dialogManager()->showSyncOptions(); 345 mView->dialogManager()->showSyncOptions();
342 } 346 }
343 347
344 //US listen for result adressed from Ka/Pi 348 //US listen for result adressed from Ka/Pi
345#ifndef DESKTOP_VERSION 349#ifndef DESKTOP_VERSION
346 connect(qApp, SIGNAL (appMessage ( const QCString &, const QByteArray & )), ExternalAppHandler::instance(), SLOT (appMessage ( const QCString &, const QByteArray & ))); 350 connect(qApp, SIGNAL (appMessage ( const QCString &, const QByteArray & )), ExternalAppHandler::instance(), SLOT (appMessage ( const QCString &, const QByteArray & )));
347#endif 351#endif
348#ifndef DESKTOP_VERSION 352#ifndef DESKTOP_VERSION
349 infrared = 0; 353 infrared = 0;
350#endif 354#endif
355 updateFilterToolbar();
351 updateWeek( mView->startDate() ); 356 updateWeek( mView->startDate() );
352 connect( mView->dateNavigator(), SIGNAL( datesSelected( const KCal::DateList & ) ), 357 connect( mView->dateNavigator(), SIGNAL( datesSelected( const KCal::DateList & ) ),
353 SLOT( updateWeekNum( const KCal::DateList & ) ) ); 358 SLOT( updateWeekNum( const KCal::DateList & ) ) );
354 mBRdisabled = false; 359 mBRdisabled = false;
355 //toggleBeamReceive(); 360 //toggleBeamReceive();
356} 361}
357MainWindow::~MainWindow() 362MainWindow::~MainWindow()
358{ 363{
359 //qDebug("MainWindow::~MainWindow() "); 364 //qDebug("MainWindow::~MainWindow() ");
360 //save toolbar location 365 //save toolbar location
361 delete mCalendar; 366 delete mCalendar;
362 delete mSyncManager; 367 delete mSyncManager;
363#ifndef DESKTOP_VERSION 368#ifndef DESKTOP_VERSION
364 if ( infrared ) 369 if ( infrared )
365 delete infrared; 370 delete infrared;
366#endif 371#endif
367 372
368 373
369} 374}
370 375
371void MainWindow::disableBR(bool b) 376void MainWindow::disableBR(bool b)
372{ 377{
373#ifndef DESKTOP_VERSION 378#ifndef DESKTOP_VERSION
374 if ( b ) { 379 if ( b ) {
375 if ( infrared ) { 380 if ( infrared ) {
376 toggleBeamReceive(); 381 toggleBeamReceive();
377 mBRdisabled = true; 382 mBRdisabled = true;
378 } 383 }
379 mBRdisabled = true; 384 mBRdisabled = true;
380 } else { 385 } else {
381 if ( mBRdisabled ) { 386 if ( mBRdisabled ) {
382 mBRdisabled = false; 387 mBRdisabled = false;
383 //makes no sense,because other cal ap is probably running 388 //makes no sense,because other cal ap is probably running
384 // toggleBeamReceive(); 389 // toggleBeamReceive();
385 } 390 }
386 } 391 }
387#endif 392#endif
388 393
389} 394}
390bool MainWindow::beamReceiveEnabled() 395bool MainWindow::beamReceiveEnabled()
391{ 396{
392#ifndef DESKTOP_VERSION 397#ifndef DESKTOP_VERSION
393 return ( infrared != 0 ); 398 return ( infrared != 0 );
394#endif 399#endif
395 return false; 400 return false;
396} 401}
397 402
398void MainWindow::toggleBeamReceive() 403void MainWindow::toggleBeamReceive()
399{ 404{
400 if ( mBRdisabled ) 405 if ( mBRdisabled )
401 return; 406 return;
402#ifndef DESKTOP_VERSION 407#ifndef DESKTOP_VERSION
403 if ( infrared ) { 408 if ( infrared ) {
404 qDebug("disable BeamReceive "); 409 qDebug("disable BeamReceive ");
405 delete infrared; 410 delete infrared;
406 infrared = 0; 411 infrared = 0;
407 brAction->setOn(false); 412 brAction->setOn(false);
408 return; 413 return;
409 } 414 }
410 qDebug("enable BeamReceive "); 415 qDebug("enable BeamReceive ");
411 brAction->setOn(true); 416 brAction->setOn(true);
412 infrared = new QCopChannel("QPE/Application/datebook",this, "channel" ) ; 417 infrared = new QCopChannel("QPE/Application/datebook",this, "channel" ) ;
413 QObject::connect( infrared, SIGNAL (received ( const QCString &, const QByteArray & )),this, SLOT(recieve( const QCString&, const QByteArray& ))); 418 QObject::connect( infrared, SIGNAL (received ( const QCString &, const QByteArray & )),this, SLOT(recieve( const QCString&, const QByteArray& )));
414#endif 419#endif
415} 420}
416void MainWindow::showMaximized () 421void MainWindow::showMaximized ()
417{ 422{
418#ifndef DESKTOP_VERSION 423#ifndef DESKTOP_VERSION
419 if ( ! globalFlagBlockStartup ) 424 if ( ! globalFlagBlockStartup )
420 if ( mClosed ) 425 if ( mClosed )
421 mView->goToday(); 426 mView->goToday();
422#endif 427#endif
423 QWidget::showMaximized () ; 428 QWidget::showMaximized () ;
424 mClosed = false; 429 mClosed = false;
425} 430}
426void MainWindow::closeEvent( QCloseEvent* ce ) 431void MainWindow::closeEvent( QCloseEvent* ce )
427{ 432{
428 433
429 434
430 435
431 if ( ! KOPrefs::instance()->mAskForQuit ) { 436 if ( ! KOPrefs::instance()->mAskForQuit ) {
432 saveOnClose(); 437 saveOnClose();
433 mClosed = true; 438 mClosed = true;
434 ce->accept(); 439 ce->accept();
435 return; 440 return;
436 441
437 } 442 }
438 443
439 switch( QMessageBox::information( this, "KO/Pi", 444 switch( QMessageBox::information( this, "KO/Pi",
440 i18n("Do you really want\nto close KO/Pi?"), 445 i18n("Do you really want\nto close KO/Pi?"),
441 i18n("Close"), i18n("No"), 446 i18n("Close"), i18n("No"),
442 0, 0 ) ) { 447 0, 0 ) ) {
443 case 0: 448 case 0:
444 saveOnClose(); 449 saveOnClose();
445 mClosed = true; 450 mClosed = true;
446 ce->accept(); 451 ce->accept();
447 break; 452 break;
448 case 1: 453 case 1:
449 ce->ignore(); 454 ce->ignore();
450 break; 455 break;
451 case 2: 456 case 2:
452 457
453 default: 458 default:
454 break; 459 break;
455 } 460 }
456 461
457 462
458} 463}
459 464
460void MainWindow::recieve( const QCString& cmsg, const QByteArray& data ) 465void MainWindow::recieve( const QCString& cmsg, const QByteArray& data )
461{ 466{
462 QDataStream stream( data, IO_ReadOnly ); 467 QDataStream stream( data, IO_ReadOnly );
463 // QMessageBox::about( this, "About KOrganizer/Pi", "*" +msg +"*" ); 468 // QMessageBox::about( this, "About KOrganizer/Pi", "*" +msg +"*" );
464 //QString datamess; 469 //QString datamess;
465 //qDebug("message "); 470 //qDebug("message ");
466 qDebug("KO: QCOP message received: %s ", cmsg.data() ); 471 qDebug("KO: QCOP message received: %s ", cmsg.data() );
467 472
468 if ( cmsg == "setDocument(QString)" ) { 473 if ( cmsg == "setDocument(QString)" ) {
469 QDataStream stream( data, IO_ReadOnly ); 474 QDataStream stream( data, IO_ReadOnly );
470 QString fileName; 475 QString fileName;
471 stream >> fileName; 476 stream >> fileName;
472 //qDebug("filename %s ", fileName.latin1()); 477 //qDebug("filename %s ", fileName.latin1());
473 showMaximized(); 478 showMaximized();
474 raise(); 479 raise();
475 KOPrefs::instance()->mLastSyncedLocalFile = fileName ; 480 KOPrefs::instance()->mLastSyncedLocalFile = fileName ;
476 mSyncManager->slotSyncMenu( 1002 ); 481 mSyncManager->slotSyncMenu( 1002 );
477 return; 482 return;
478 } 483 }
479 484
480 if ( cmsg == "-writeFile" ) { 485 if ( cmsg == "-writeFile" ) {
481 // I made from the "-writeFile" an "-writeAlarm" 486 // I made from the "-writeFile" an "-writeAlarm"
482 mView->viewManager()->showWhatsNextView(); 487 mView->viewManager()->showWhatsNextView();
483 mCalendar->checkAlarmForIncidence( 0, true); 488 mCalendar->checkAlarmForIncidence( 0, true);
484 showMaximized(); 489 showMaximized();
485 raise(); 490 raise();
486 return; 491 return;
487 492
488 } 493 }
489 if ( cmsg == "-writeFileSilent" ) { 494 if ( cmsg == "-writeFileSilent" ) {
490 // I made from the "-writeFile" an "-writeAlarm" 495 // I made from the "-writeFile" an "-writeAlarm"
491 // mView->viewManager()->showWhatsNextView(); 496 // mView->viewManager()->showWhatsNextView();
492 mCalendar->checkAlarmForIncidence( 0, true); 497 mCalendar->checkAlarmForIncidence( 0, true);
493 //showMaximized(); 498 //showMaximized();
494 //raise(); 499 //raise();
495 hide(); 500 hide();
496 return; 501 return;
497 } 502 }
498 if ( cmsg == "-newCountdown" ) { 503 if ( cmsg == "-newCountdown" ) {
499 qDebug("newCountdown "); 504 qDebug("newCountdown ");
500 505
501 } 506 }
502 QString msg ; 507 QString msg ;
503 QString allmsg = cmsg; 508 QString allmsg = cmsg;
504 while ( allmsg.length() > 0 ) { 509 while ( allmsg.length() > 0 ) {
505 int nextC = allmsg.find( "-", 1 ); 510 int nextC = allmsg.find( "-", 1 );
506 if ( nextC == -1 ) { 511 if ( nextC == -1 ) {
507 msg = allmsg; 512 msg = allmsg;
508 allmsg = ""; 513 allmsg = "";
509 } else{ 514 } else{
510 msg = allmsg.left( nextC ); 515 msg = allmsg.left( nextC );
511 allmsg = allmsg.mid( nextC, allmsg.length()-nextC ); 516 allmsg = allmsg.mid( nextC, allmsg.length()-nextC );
512 } 517 }
513 //qDebug("msg: %s all: %s ", msg.latin1(), allmsg.latin1() ); 518 //qDebug("msg: %s all: %s ", msg.latin1(), allmsg.latin1() );
514 if ( msg == "-newEvent" ) { 519 if ( msg == "-newEvent" ) {
515 mView->newEvent(); 520 mView->newEvent();
516 } 521 }
517 if ( msg == "-newTodo" ) { 522 if ( msg == "-newTodo" ) {
518 mView->newTodo(); 523 mView->newTodo();
519 524
520 } 525 }
521 if ( msg == "-showWN" ) { 526 if ( msg == "-showWN" ) {
522 mView->viewManager()->showWhatsNextView(); 527 mView->viewManager()->showWhatsNextView();
523 } 528 }
524 if ( msg == "-showTodo" ) { 529 if ( msg == "-showTodo" ) {
525 mView->viewManager()->showTodoView(); 530 mView->viewManager()->showTodoView();
526 } 531 }
527 if ( msg == "-showList" ) { 532 if ( msg == "-showList" ) {
528 mView->viewManager()->showListView(); 533 mView->viewManager()->showListView();
529 } 534 }
530 else if ( msg == "-showDay" ) { 535 else if ( msg == "-showDay" ) {
531 mView->viewManager()->showDayView(); 536 mView->viewManager()->showDayView();
532 } 537 }
533 else if ( msg == "-showWWeek" ) { 538 else if ( msg == "-showWWeek" ) {
534 mView->viewManager()->showWorkWeekView(); 539 mView->viewManager()->showWorkWeekView();
535 } 540 }
536 else if ( msg == "-ringSync" ) { 541 else if ( msg == "-ringSync" ) {
537 mSyncManager->multiSync( false ); 542 mSyncManager->multiSync( false );
538 } 543 }
539 else if ( msg == "-showWeek" ) { 544 else if ( msg == "-showWeek" ) {
540 mView->viewManager()->showWeekView(); 545 mView->viewManager()->showWeekView();
541 } 546 }
542 else if ( msg == "-showTodo" ) { 547 else if ( msg == "-showTodo" ) {
543 mView->viewManager()->showTodoView(); 548 mView->viewManager()->showTodoView();
544 } 549 }
545 else if ( msg == "-showJournal" ) { 550 else if ( msg == "-showJournal" ) {
546 mView->dateNavigator()->selectDates( 1 ); 551 mView->dateNavigator()->selectDates( 1 );
547 mView->dateNavigator()->selectToday(); 552 mView->dateNavigator()->selectToday();
548 mView->viewManager()->showJournalView(); 553 mView->viewManager()->showJournalView();
549 } 554 }
550 else if ( msg == "-showKO" ) { 555 else if ( msg == "-showKO" ) {
551 mView->viewManager()->showNextXView(); 556 mView->viewManager()->showNextXView();
552 } 557 }
553 else if ( msg == "-showWNext" ) { 558 else if ( msg == "-showWNext" ) {
554 mView->viewManager()->showWhatsNextView(); 559 mView->viewManager()->showWhatsNextView();
555 } 560 }
556 else if ( msg == "nextView()" ) { 561 else if ( msg == "nextView()" ) {
557 mView->viewManager()->showNextView(); 562 mView->viewManager()->showNextView();
558 } 563 }
559 else if ( msg == "-showNextXView" ) { 564 else if ( msg == "-showNextXView" ) {
560 mView->viewManager()->showNextXView(); 565 mView->viewManager()->showNextXView();
561 } 566 }
562 567
563 568
564 } 569 }
565 570
566 showMaximized(); 571 showMaximized();
567 raise(); 572 raise();
568} 573}
569 574
570QPixmap MainWindow::loadPixmap( QString name ) 575QPixmap MainWindow::loadPixmap( QString name )
571{ 576{
572 return SmallIcon( name ); 577 return SmallIcon( name );
573 578
574} 579}
575void MainWindow::initActions() 580void MainWindow::initActions()
576{ 581{
577 //KOPrefs::instance()->mShowFullMenu 582 //KOPrefs::instance()->mShowFullMenu
578 iconToolBar->clear(); 583 iconToolBar->clear();
579 KOPrefs *p = KOPrefs::instance(); 584 KOPrefs *p = KOPrefs::instance();
580 //QPEMenuBar *menuBar1;// = new QPEMenuBar( iconToolBar ); 585 //QPEMenuBar *menuBar1;// = new QPEMenuBar( iconToolBar );
581 586
582 QPopupMenu *viewMenu = new QPopupMenu( this ); 587 QPopupMenu *viewMenu = new QPopupMenu( this );
583 QPopupMenu *actionMenu = new QPopupMenu( this ); 588 QPopupMenu *actionMenu = new QPopupMenu( this );
584 QPopupMenu *importMenu = new QPopupMenu( this ); 589 QPopupMenu *importMenu = new QPopupMenu( this );
585 QPopupMenu *importMenu_X = new QPopupMenu( this ); 590 QPopupMenu *importMenu_X = new QPopupMenu( this );
586 QPopupMenu *exportMenu_X = new QPopupMenu( this ); 591 QPopupMenu *exportMenu_X = new QPopupMenu( this );
587 QPopupMenu *beamMenu_X = new QPopupMenu( this ); 592 QPopupMenu *beamMenu_X = new QPopupMenu( this );
588 selectFilterMenu = new QPopupMenu( this ); 593 selectFilterMenu = new QPopupMenu( this );
589 selectFilterMenu->setCheckable( true ); 594 selectFilterMenu->setCheckable( true );
590 syncMenu = new QPopupMenu( this ); 595 syncMenu = new QPopupMenu( this );
591 configureAgendaMenu = new QPopupMenu( this ); 596 configureAgendaMenu = new QPopupMenu( this );
592 configureToolBarMenu = new QPopupMenu( this ); 597 configureToolBarMenu = new QPopupMenu( this );
593 QPopupMenu *helpMenu = new QPopupMenu( this ); 598 QPopupMenu *helpMenu = new QPopupMenu( this );
594 QIconSet icon; 599 QIconSet icon;
595 int pixWid = 22, pixHei = 22; 600 int pixWid = 22, pixHei = 22;
596 QString pathString = ""; 601 QString pathString = "";
597 if ( !p->mToolBarMiniIcons ) { 602 if ( !p->mToolBarMiniIcons ) {
598 if ( QApplication::desktop()->width() < 480 ) { 603 if ( QApplication::desktop()->width() < 480 ) {
599 pathString += "icons16/"; 604 pathString += "icons16/";
600 pixWid = 18; pixHei = 16; 605 pixWid = 18; pixHei = 16;
601 } 606 }
602 } else { 607 } else {
603 pathString += "iconsmini/"; 608 pathString += "iconsmini/";
604 pixWid = 18; pixHei = 16; 609 pixWid = 18; pixHei = 16;
605 } 610 }
606 if ( KOPrefs::instance()->mShowFullMenu ) { 611 if ( KOPrefs::instance()->mShowFullMenu ) {
607 QMenuBar *menuBar1; 612 QMenuBar *menuBar1;
608 menuBar1 = menuBar(); 613 menuBar1 = menuBar();
609 menuBar1->insertItem( i18n("File"), importMenu ); 614 menuBar1->insertItem( i18n("File"), importMenu );
610 menuBar1->insertItem( i18n("View"), viewMenu ); 615 menuBar1->insertItem( i18n("View"), viewMenu );
611 menuBar1->insertItem( i18n("Actions"), actionMenu ); 616 menuBar1->insertItem( i18n("Actions"), actionMenu );
612#ifdef DESKTOP_VERSION 617#ifdef DESKTOP_VERSION
613 menuBar1->insertItem( i18n("Synchronize"), syncMenu ); 618 menuBar1->insertItem( i18n("Synchronize"), syncMenu );
614 menuBar1->insertItem( i18n("AgendaSize"),configureAgendaMenu ); 619 menuBar1->insertItem( i18n("AgendaSize"),configureAgendaMenu );
615#else 620#else
616 menuBar1->insertItem( i18n("Sync"), syncMenu ); 621 menuBar1->insertItem( i18n("Sync"), syncMenu );
617 menuBar1->insertItem( i18n("Agenda"),configureAgendaMenu ); 622 menuBar1->insertItem( i18n("Agenda"),configureAgendaMenu );
618#endif 623#endif
619 //menuBar1->insertItem( i18n("Toolbar"),configureToolBarMenu ); 624 //menuBar1->insertItem( i18n("Toolbar"),configureToolBarMenu );
620 menuBar1->insertItem( i18n("Filter"),selectFilterMenu ); 625 menuBar1->insertItem( i18n("Filter"),selectFilterMenu );
621 menuBar1->insertItem( i18n("Help"), helpMenu ); 626 menuBar1->insertItem( i18n("Help"), helpMenu );
622 } else { 627 } else {
623 QPEMenuBar *menuBar1; 628 QPEMenuBar *menuBar1;
624 menuBar1 = new QPEMenuBar( iconToolBar ); 629 menuBar1 = new QPEMenuBar( iconToolBar );
625 QPopupMenu *menuBar = new QPopupMenu( this ); 630 QPopupMenu *menuBar = new QPopupMenu( this );
626 icon = loadPixmap( pathString + "z_menu" ); 631 icon = loadPixmap( pathString + "z_menu" );
627 menuBar1->insertItem( icon.pixmap(), menuBar); 632 menuBar1->insertItem( icon.pixmap(), menuBar);
628 //menuBar1->insertItem( i18n("ME"), menuBar); 633 //menuBar1->insertItem( i18n("ME"), menuBar);
629 menuBar->insertItem( i18n("File"), importMenu ); 634 menuBar->insertItem( i18n("File"), importMenu );
630 menuBar->insertItem( i18n("View"), viewMenu ); 635 menuBar->insertItem( i18n("View"), viewMenu );
631 menuBar->insertItem( i18n("Actions"), actionMenu ); 636 menuBar->insertItem( i18n("Actions"), actionMenu );
632 menuBar->insertItem( i18n("Synchronize"), syncMenu ); 637 menuBar->insertItem( i18n("Synchronize"), syncMenu );
633 menuBar->insertItem( i18n("AgendaSize"),configureAgendaMenu ); 638 menuBar->insertItem( i18n("AgendaSize"),configureAgendaMenu );
634 menuBar->insertItem( i18n("Toolbar"),configureToolBarMenu ); 639 menuBar->insertItem( i18n("Toolbar"),configureToolBarMenu );
635 menuBar->insertItem( i18n("Filter"),selectFilterMenu ); 640 menuBar->insertItem( i18n("Filter"),selectFilterMenu );
636 menuBar->insertItem( i18n("Help"), helpMenu ); 641 menuBar->insertItem( i18n("Help"), helpMenu );
637 //menuBar1->setMaximumWidth( menuBar1->sizeHint().width() ); 642 //menuBar1->setMaximumWidth( menuBar1->sizeHint().width() );
638 menuBar1->setMaximumSize( menuBar1->sizeHint( )); 643 menuBar1->setMaximumSize( menuBar1->sizeHint( ));
639 } 644 }
640 connect ( selectFilterMenu, SIGNAL( activated ( int ) ), this, SLOT (selectFilter( int ) ) ); 645 connect ( selectFilterMenu, SIGNAL( activated ( int ) ), this, SLOT (selectFilter( int ) ) );
641 connect ( selectFilterMenu, SIGNAL( aboutToShow() ), this, SLOT (fillFilterMenu() ) ); 646 connect ( selectFilterMenu, SIGNAL( aboutToShow() ), this, SLOT (fillFilterMenu() ) );
642 mWeekBgColor = iconToolBar->backgroundColor(); 647 mWeekBgColor = iconToolBar->backgroundColor();
643 mWeekPixmap.resize( pixWid , pixHei ); 648 mWeekPixmap.resize( pixWid , pixHei );
644 mWeekPixmap.fill( mWeekBgColor ); 649 mWeekPixmap.fill( mWeekBgColor );
645 icon = mWeekPixmap; 650 icon = mWeekPixmap;
646 mWeekAction = new QAction( i18n("Select week number"),icon, i18n("Select week number"), 0, this ); 651 mWeekAction = new QAction( i18n("Select week number"),icon, i18n("Select week number"), 0, this );
647 if ( p-> mShowIconWeekNum ) 652 if ( p-> mShowIconWeekNum )
648 mWeekAction->addTo( iconToolBar ); 653 mWeekAction->addTo( iconToolBar );
649 mWeekFont = font(); 654 mWeekFont = font();
650 655
651 int fontPoint = mWeekFont.pointSize(); 656 int fontPoint = mWeekFont.pointSize();
652 QFontMetrics f( mWeekFont ); 657 QFontMetrics f( mWeekFont );
653 int fontWid = f.width( "30" ); 658 int fontWid = f.width( "30" );
654 while ( fontWid > pixWid ) { 659 while ( fontWid > pixWid ) {
655 --fontPoint; 660 --fontPoint;
656 mWeekFont.setPointSize( fontPoint ); 661 mWeekFont.setPointSize( fontPoint );
657 QFontMetrics f( mWeekFont ); 662 QFontMetrics f( mWeekFont );
658 fontWid = f.width( "30" ); 663 fontWid = f.width( "30" );
659 //qDebug("dec-- "); 664 //qDebug("dec-- ");
660 } 665 }
661 666
662 connect( mWeekAction, SIGNAL( activated() ), 667 connect( mWeekAction, SIGNAL( activated() ),
663 this, SLOT( weekAction() ) ); 668 this, SLOT( weekAction() ) );
664 669
665 connect( this, SIGNAL( selectWeek ( int ) ), mView->dateNavigator(), SLOT( selectWeek ( int ) ) ); 670 connect( this, SIGNAL( selectWeek ( int ) ), mView->dateNavigator(), SLOT( selectWeek ( int ) ) );
666 671
667 //#endif 672 //#endif
668 // ****************** 673 // ******************
669 QAction *action; 674 QAction *action;
670 // QPopupMenu *configureMenu= new QPopupMenu( menuBar ); 675 // QPopupMenu *configureMenu= new QPopupMenu( menuBar );
671 configureToolBarMenu->setCheckable( true ); 676 configureToolBarMenu->setCheckable( true );
672 677
673 678
674 configureAgendaMenu->setCheckable( true ); 679 configureAgendaMenu->setCheckable( true );
675 int iii ; 680 int iii ;
676 for ( iii = 1;iii<= 10 ;++iii ){ 681 for ( iii = 1;iii<= 10 ;++iii ){
677 configureAgendaMenu->insertItem(i18n("Size %1").arg(iii), (iii+1)*2 ); 682 configureAgendaMenu->insertItem(i18n("Size %1").arg(iii), (iii+1)*2 );
678 } 683 }
679 //configureMenu->insertItem( "AgendaSize",configureAgendaMenu ); 684 //configureMenu->insertItem( "AgendaSize",configureAgendaMenu );
680 685
681 connect( configureAgendaMenu, SIGNAL( aboutToShow()), 686 connect( configureAgendaMenu, SIGNAL( aboutToShow()),
682 this, SLOT( showConfigureAgenda( ) ) ); 687 this, SLOT( showConfigureAgenda( ) ) );
683 688
684 icon = loadPixmap( pathString + "configure" ); 689 icon = loadPixmap( pathString + "configure" );
685 action = new QAction( i18n("Configure"),icon, i18n("Configure..."), 0, this ); 690 action = new QAction( i18n("Configure"),icon, i18n("Configure..."), 0, this );
686 action->addTo( actionMenu ); 691 action->addTo( actionMenu );
687 connect( action, SIGNAL( activated() ), 692 connect( action, SIGNAL( activated() ),
688 mView, SLOT( edit_options() ) ); 693 mView, SLOT( edit_options() ) );
689 actionMenu->insertSeparator(); 694 actionMenu->insertSeparator();
690 695
691 action = new QAction( i18n("Undo Delete"), i18n("Undo Delete..."), 0, this ); 696 action = new QAction( i18n("Undo Delete"), i18n("Undo Delete..."), 0, this );
692 action->addTo( actionMenu ); 697 action->addTo( actionMenu );
693 connect( action, SIGNAL( activated() ), 698 connect( action, SIGNAL( activated() ),
694 mView, SLOT( undo_delete() ) ); 699 mView, SLOT( undo_delete() ) );
695 actionMenu->insertSeparator(); 700 actionMenu->insertSeparator();
696 701
697 icon = loadPixmap( pathString + "newevent" ); 702 icon = loadPixmap( pathString + "newevent" );
698 configureToolBarMenu->insertItem(i18n("Stretched TB"), 5 ); 703 configureToolBarMenu->insertItem(i18n("Stretched TB"), 5 );
699 configureToolBarMenu->insertItem(i18n("Only one toolbar"), 6 ); 704 configureToolBarMenu->insertItem(i18n("Only one toolbar"), 6 );
700 configureToolBarMenu->insertSeparator(); 705 configureToolBarMenu->insertSeparator();
701 configureToolBarMenu->insertItem(i18n("Filtermenu"), 7 ); 706 configureToolBarMenu->insertItem(i18n("Filtermenu"), 7 );
702 configureToolBarMenu->insertSeparator(); 707 configureToolBarMenu->insertSeparator();
703 configureToolBarMenu->insertItem(i18n("Week Number"), 400); 708 configureToolBarMenu->insertItem(i18n("Week Number"), 400);
704 configureToolBarMenu->insertItem(icon, i18n("New Event..."), 10 ); 709 configureToolBarMenu->insertItem(icon, i18n("New Event..."), 10 );
705 QAction* ne_action = new QAction( i18n("New Event..."), icon, i18n("New Event..."), 0, this ); 710 QAction* ne_action = new QAction( i18n("New Event..."), icon, i18n("New Event..."), 0, this );
706 ne_action->addTo( actionMenu ); 711 ne_action->addTo( actionMenu );
707 connect( ne_action, SIGNAL( activated() ), 712 connect( ne_action, SIGNAL( activated() ),
708 mView, SLOT( newEvent() ) ); 713 mView, SLOT( newEvent() ) );
709 icon = loadPixmap( pathString + "newtodo" ); 714 icon = loadPixmap( pathString + "newtodo" );
710 configureToolBarMenu->insertItem(icon, i18n("New Todo..."), 20 ); 715 configureToolBarMenu->insertItem(icon, i18n("New Todo..."), 20 );
711 QAction* nt_action = new QAction( i18n("New Todo..."), icon, i18n("New Todo..."), 0, this ); 716 QAction* nt_action = new QAction( i18n("New Todo..."), icon, i18n("New Todo..."), 0, this );
712 nt_action->addTo( actionMenu ); 717 nt_action->addTo( actionMenu );
713 connect( nt_action, SIGNAL( activated() ), 718 connect( nt_action, SIGNAL( activated() ),
714 mView, SLOT( newTodo() ) ); 719 mView, SLOT( newTodo() ) );
715 720
716 icon = loadPixmap( pathString + "today" ); 721 icon = loadPixmap( pathString + "today" );
717 QAction* today_action = new QAction( i18n("Go to Today"), icon, i18n("Go to Today"), 0, this ); 722 QAction* today_action = new QAction( i18n("Go to Today"), icon, i18n("Go to Today"), 0, this );
718 today_action->addTo( viewMenu ); 723 today_action->addTo( viewMenu );
719 connect( today_action, SIGNAL( activated() ), 724 connect( today_action, SIGNAL( activated() ),
720 mView, SLOT( goToday() ) ); 725 mView, SLOT( goToday() ) );
721 viewMenu->insertSeparator(); 726 viewMenu->insertSeparator();
722 727
723 icon = loadPixmap( pathString + "navi" ); 728 icon = loadPixmap( pathString + "navi" );
724 action = new QAction( i18n("Toggle DateNavigator"), icon, i18n("Toggle DateNavigator"), 0, this ); 729 action = new QAction( i18n("Toggle DateNavigator"), icon, i18n("Toggle DateNavigator"), 0, this );
725 action->addTo( viewMenu ); 730 action->addTo( viewMenu );
726 connect( action, SIGNAL( activated() ), 731 connect( action, SIGNAL( activated() ),
727 mView, SLOT( toggleDateNavigatorWidget() ) ); 732 mView, SLOT( toggleDateNavigatorWidget() ) );
728 mToggleNav = action ; 733 mToggleNav = action ;
729 icon = loadPixmap( pathString + "filter" ); 734 icon = loadPixmap( pathString + "filter" );
730 action = new QAction( i18n("Toggle FilterView"), icon, i18n("Toggle FilterView"), 0, this ); 735 action = new QAction( i18n("Toggle FilterView"), icon, i18n("Toggle FilterView"), 0, this );
731 action->addTo( viewMenu ); 736 action->addTo( viewMenu );
732 connect( action, SIGNAL( activated() ), 737 connect( action, SIGNAL( activated() ),
733 mView, SLOT( toggleFilter() ) ); 738 mView, SLOT( toggleFilter() ) );
734 mToggleFilter = action; 739 mToggleFilter = action;
735 icon = loadPixmap( pathString + "allday" ); 740 icon = loadPixmap( pathString + "allday" );
736 action = new QAction( i18n("Toggle Allday"), icon,i18n("Toggle Allday"), 0, this ); 741 action = new QAction( i18n("Toggle Allday"), icon,i18n("Toggle Allday"), 0, this );
737 action->addTo( viewMenu ); 742 action->addTo( viewMenu );
738 connect( action, SIGNAL( activated() ), 743 connect( action, SIGNAL( activated() ),
739 mView, SLOT( toggleAllDaySize() ) ); 744 mView, SLOT( toggleAllDaySize() ) );
740 mToggleAllday = action; 745 mToggleAllday = action;
741 746
742 747
743 connect( mView->viewManager(), SIGNAL( signalFullScreen( bool ) ), 748 connect( mView->viewManager(), SIGNAL( signalFullScreen( bool ) ),
744 mToggleNav, SLOT( setEnabled ( bool ) ) ); 749 mToggleNav, SLOT( setEnabled ( bool ) ) );
745 connect( mView->viewManager(), SIGNAL( signalFullScreen( bool ) ), 750 connect( mView->viewManager(), SIGNAL( signalFullScreen( bool ) ),
746 mToggleFilter, SLOT( setEnabled ( bool ) ) ); 751 mToggleFilter, SLOT( setEnabled ( bool ) ) );
747 connect( mView->viewManager(), SIGNAL( signalAgendaView( bool ) ), 752 connect( mView->viewManager(), SIGNAL( signalAgendaView( bool ) ),
748 mToggleAllday, SLOT( setEnabled ( bool ) ) ); 753 mToggleAllday, SLOT( setEnabled ( bool ) ) );
749 754
750 viewMenu->insertSeparator(); 755 viewMenu->insertSeparator();
751 icon = loadPixmap( pathString + "picker" ); 756 icon = loadPixmap( pathString + "picker" );
752 action = new QAction( i18n("Date Picker"), icon, i18n("Date Picker"), 0, this ); 757 action = new QAction( i18n("Date Picker"), icon, i18n("Date Picker"), 0, this );
753 action->addTo( viewMenu ); 758 action->addTo( viewMenu );
754 connect( action, SIGNAL( activated() ), 759 connect( action, SIGNAL( activated() ),
755 mView, SLOT( showDatePicker() ) ); 760 mView, SLOT( showDatePicker() ) );
756 action->addTo( iconToolBar ); 761 action->addTo( iconToolBar );
757 viewMenu->insertSeparator(); 762 viewMenu->insertSeparator();
758 763
759 764
760 icon = loadPixmap( pathString + "whatsnext" ); 765 icon = loadPixmap( pathString + "whatsnext" );
761 configureToolBarMenu->insertItem(icon, i18n("What's Next"), 110 ); 766 configureToolBarMenu->insertItem(icon, i18n("What's Next"), 110 );
762 QAction* whatsnext_action = new QAction( i18n("What's Next"), icon, i18n("What's Next"), 0, this ); 767 QAction* whatsnext_action = new QAction( i18n("What's Next"), icon, i18n("What's Next"), 0, this );
763 whatsnext_action->addTo( viewMenu ); 768 whatsnext_action->addTo( viewMenu );
764 connect( whatsnext_action, SIGNAL( activated() ), 769 connect( whatsnext_action, SIGNAL( activated() ),
765 mView->viewManager(), SLOT( showWhatsNextView() ) ); 770 mView->viewManager(), SLOT( showWhatsNextView() ) );
766 771
767 icon = loadPixmap( pathString + "xdays" ); 772 icon = loadPixmap( pathString + "xdays" );
768 configureToolBarMenu->insertItem(icon, i18n("Next days"), 100 ); 773 configureToolBarMenu->insertItem(icon, i18n("Next days"), 100 );
769 QAction* xdays_action = new QAction( i18n("Next days"), icon, i18n("Next days"), 0, this ); 774 QAction* xdays_action = new QAction( i18n("Next days"), icon, i18n("Next days"), 0, this );
770 xdays_action->addTo( viewMenu ); 775 xdays_action->addTo( viewMenu );
771 connect( xdays_action, SIGNAL( activated() ), 776 connect( xdays_action, SIGNAL( activated() ),
772 mView->viewManager(), SLOT( showNextXView() ) ); 777 mView->viewManager(), SLOT( showNextXView() ) );
773 778
774 779
775 icon = loadPixmap( pathString + "journal" ); 780 icon = loadPixmap( pathString + "journal" );
776 configureToolBarMenu->insertItem(icon, i18n("Journal"), 90 ); 781 configureToolBarMenu->insertItem(icon, i18n("Journal"), 90 );
777 QAction* viewjournal_action = new QAction( i18n("Journal"), icon, i18n("Journal"), 0, this ); 782 QAction* viewjournal_action = new QAction( i18n("Journal"), icon, i18n("Journal"), 0, this );
778 viewjournal_action->addTo( viewMenu ); 783 viewjournal_action->addTo( viewMenu );
779 connect( viewjournal_action, SIGNAL( activated() ), 784 connect( viewjournal_action, SIGNAL( activated() ),
780 mView->viewManager(), SLOT( showJournalView() ) ); 785 mView->viewManager(), SLOT( showJournalView() ) );
781 786
782 787
783 icon = loadPixmap( pathString + "day" ); 788 icon = loadPixmap( pathString + "day" );
784 configureToolBarMenu->insertItem(icon, i18n("Day View"), 40 ); 789 configureToolBarMenu->insertItem(icon, i18n("Day View"), 40 );
785 QAction* day1_action = new QAction( i18n("Day View"), icon, i18n("Day View"), 0, this ); 790 QAction* day1_action = new QAction( i18n("Day View"), icon, i18n("Day View"), 0, this );
786 day1_action->addTo( viewMenu ); 791 day1_action->addTo( viewMenu );
787 // action->addTo( toolBar ); 792 // action->addTo( toolBar );
788 connect( day1_action, SIGNAL( activated() ), 793 connect( day1_action, SIGNAL( activated() ),
789 mView->viewManager(), SLOT( showDayView() ) ); 794 mView->viewManager(), SLOT( showDayView() ) );
790 795
791 icon = loadPixmap( pathString + "workweek" ); 796 icon = loadPixmap( pathString + "workweek" );
792 configureToolBarMenu->insertItem(icon, i18n("Work Week"), 50 ); 797 configureToolBarMenu->insertItem(icon, i18n("Work Week"), 50 );
793 QAction* day5_action = new QAction( i18n("Work Week"), icon, i18n("Work Week"), 0, this ); 798 QAction* day5_action = new QAction( i18n("Work Week"), icon, i18n("Work Week"), 0, this );
794 day5_action->addTo( viewMenu ); 799 day5_action->addTo( viewMenu );
795 connect( day5_action, SIGNAL( activated() ), 800 connect( day5_action, SIGNAL( activated() ),
796 mView->viewManager(), SLOT( showWorkWeekView() ) ); 801 mView->viewManager(), SLOT( showWorkWeekView() ) );
797 802
798 icon = loadPixmap( pathString + "week" ); 803 icon = loadPixmap( pathString + "week" );
799 configureToolBarMenu->insertItem(icon, i18n("Week"), 60 ); 804 configureToolBarMenu->insertItem(icon, i18n("Week"), 60 );
800 QAction* day7_action = new QAction( i18n("Week"), icon, i18n("Week"), 0, this ); 805 QAction* day7_action = new QAction( i18n("Week"), icon, i18n("Week"), 0, this );
801 day7_action->addTo( viewMenu ); 806 day7_action->addTo( viewMenu );
802 connect( day7_action, SIGNAL( activated() ), 807 connect( day7_action, SIGNAL( activated() ),
803 mView->viewManager(), SLOT( showWeekView() ) ); 808 mView->viewManager(), SLOT( showWeekView() ) );
804 809
805 icon = loadPixmap( pathString + "workweek2" ); 810 icon = loadPixmap( pathString + "workweek2" );
806 configureToolBarMenu->insertItem(icon, i18n("List week view"), 75 ); 811 configureToolBarMenu->insertItem(icon, i18n("List week view"), 75 );
807 QAction* day6_action = new QAction( i18n("List week"), icon, i18n("List week"), 0, this ); 812 QAction* day6_action = new QAction( i18n("List week"), icon, i18n("List week"), 0, this );
808 day6_action->addTo( viewMenu ); 813 day6_action->addTo( viewMenu );
809 connect( day6_action, SIGNAL( activated() ), 814 connect( day6_action, SIGNAL( activated() ),
810 mView->viewManager(), SLOT( showMonthViewWeek() ) ); 815 mView->viewManager(), SLOT( showMonthViewWeek() ) );
811 816
812 icon = loadPixmap( pathString + "month" ); 817 icon = loadPixmap( pathString + "month" );
813 configureToolBarMenu->insertItem(icon, i18n("Month"), 70 ); 818 configureToolBarMenu->insertItem(icon, i18n("Month"), 70 );
814 QAction* month_action = new QAction( i18n("Month"), icon, i18n("Month"), 0, this ); 819 QAction* month_action = new QAction( i18n("Month"), icon, i18n("Month"), 0, this );
815 month_action->addTo( viewMenu ); 820 month_action->addTo( viewMenu );
816 connect( month_action, SIGNAL( activated() ), 821 connect( month_action, SIGNAL( activated() ),
817 mView->viewManager(), SLOT( showMonthView() ) ); 822 mView->viewManager(), SLOT( showMonthView() ) );
818 823
819 icon = loadPixmap( pathString + "list" ); 824 icon = loadPixmap( pathString + "list" );
820 configureToolBarMenu->insertItem(icon, i18n("List View"), 30 ); 825 configureToolBarMenu->insertItem(icon, i18n("List View"), 30 );
821 QAction* showlist_action = new QAction( i18n("List View"), icon, i18n("List View"), 0, this ); 826 QAction* showlist_action = new QAction( i18n("List View"), icon, i18n("List View"), 0, this );
822 showlist_action->addTo( viewMenu ); 827 showlist_action->addTo( viewMenu );
823 connect( showlist_action, SIGNAL( activated() ), 828 connect( showlist_action, SIGNAL( activated() ),
824 mView->viewManager(), SLOT( showListView() ) ); 829 mView->viewManager(), SLOT( showListView() ) );
825 830
826 icon = loadPixmap( pathString + "todo" ); 831 icon = loadPixmap( pathString + "todo" );
827 configureToolBarMenu->insertItem(icon, i18n("Todo View"), 80 ); 832 configureToolBarMenu->insertItem(icon, i18n("Todo View"), 80 );
828 QAction* todoview_action = new QAction( i18n("Todo View"), icon, i18n("Todo View"), 0, this ); 833 QAction* todoview_action = new QAction( i18n("Todo View"), icon, i18n("Todo View"), 0, this );
829 todoview_action->addTo( viewMenu ); 834 todoview_action->addTo( viewMenu );
830 connect( todoview_action, SIGNAL( activated() ), 835 connect( todoview_action, SIGNAL( activated() ),
831 mView->viewManager(), SLOT( showTodoView() ) ); 836 mView->viewManager(), SLOT( showTodoView() ) );
832 837
833 838
834 839
835#if 0 840#if 0
836 action = new QAction( "view_timespan", "Time Span", 0, this ); 841 action = new QAction( "view_timespan", "Time Span", 0, this );
837 action->addTo( viewMenu ); 842 action->addTo( viewMenu );
838 connect( action, SIGNAL( activated() ), 843 connect( action, SIGNAL( activated() ),
839 mView->viewManager(), SLOT( showTimeSpanView() ) ); 844 mView->viewManager(), SLOT( showTimeSpanView() ) );
840#endif 845#endif
841 846
842 mNewSubTodoAction = new QAction( "new_subtodo", i18n("New Sub-Todo..."), 0, 847 mNewSubTodoAction = new QAction( "new_subtodo", i18n("New Sub-Todo..."), 0,
843 this ); 848 this );
844 mNewSubTodoAction->addTo( actionMenu ); 849 mNewSubTodoAction->addTo( actionMenu );
845 connect( mNewSubTodoAction, SIGNAL( activated() ), 850 connect( mNewSubTodoAction, SIGNAL( activated() ),
846 mView, SLOT( newSubTodo() ) ); 851 mView, SLOT( newSubTodo() ) );
847 852
848 actionMenu->insertSeparator(); 853 actionMenu->insertSeparator();
849 854
850 mShowAction = new QAction( "show_incidence", i18n("Show..."), 0, this ); 855 mShowAction = new QAction( "show_incidence", i18n("Show..."), 0, this );
851 mShowAction->addTo( actionMenu ); 856 mShowAction->addTo( actionMenu );
852 connect( mShowAction, SIGNAL( activated() ), 857 connect( mShowAction, SIGNAL( activated() ),
853 mView, SLOT( showIncidence() ) ); 858 mView, SLOT( showIncidence() ) );
854 859
855 mEditAction = new QAction( "edit_incidence", i18n("Edit..."), 0, this ); 860 mEditAction = new QAction( "edit_incidence", i18n("Edit..."), 0, this );
856 mEditAction->addTo( actionMenu ); 861 mEditAction->addTo( actionMenu );
857 connect( mEditAction, SIGNAL( activated() ), 862 connect( mEditAction, SIGNAL( activated() ),
858 mView, SLOT( editIncidence() ) ); 863 mView, SLOT( editIncidence() ) );
859 864
860 mDeleteAction = new QAction( "delete_incidence", i18n("Delete..."), 0, this ); 865 mDeleteAction = new QAction( "delete_incidence", i18n("Delete..."), 0, this );
861 mDeleteAction->addTo( actionMenu ); 866 mDeleteAction->addTo( actionMenu );
862 connect( mDeleteAction, SIGNAL( activated() ), 867 connect( mDeleteAction, SIGNAL( activated() ),
863 mView, SLOT( deleteIncidence() ) ); 868 mView, SLOT( deleteIncidence() ) );
864 869
865 870
866 mCloneAction = new QAction( "clone_incidence", i18n("Clone..."), 0, this ); 871 mCloneAction = new QAction( "clone_incidence", i18n("Clone..."), 0, this );
867 mCloneAction->addTo( actionMenu ); 872 mCloneAction->addTo( actionMenu );
868 connect( mCloneAction, SIGNAL( activated() ), 873 connect( mCloneAction, SIGNAL( activated() ),
869 mView, SLOT( cloneIncidence() ) ); 874 mView, SLOT( cloneIncidence() ) );
870 mMoveAction = new QAction( "Move_incidence", i18n("Move..."), 0, this ); 875 mMoveAction = new QAction( "Move_incidence", i18n("Move..."), 0, this );
871 mMoveAction->addTo( actionMenu ); 876 mMoveAction->addTo( actionMenu );
872 connect( mMoveAction, SIGNAL( activated() ), 877 connect( mMoveAction, SIGNAL( activated() ),
873 mView, SLOT( moveIncidence() ) ); 878 mView, SLOT( moveIncidence() ) );
874 mBeamAction = new QAction( "Beam_incidence", i18n("Beam..."), 0, this ); 879 mBeamAction = new QAction( "Beam_incidence", i18n("Beam..."), 0, this );
875 mBeamAction->addTo( actionMenu ); 880 mBeamAction->addTo( actionMenu );
876 connect( mBeamAction, SIGNAL( activated() ), 881 connect( mBeamAction, SIGNAL( activated() ),
877 mView, SLOT( beamIncidence() ) ); 882 mView, SLOT( beamIncidence() ) );
878 mCancelAction = new QAction( "Cancel_incidence", i18n("Toggle Cancel"), 0, this ); 883 mCancelAction = new QAction( "Cancel_incidence", i18n("Toggle Cancel"), 0, this );
879 mCancelAction->addTo( actionMenu ); 884 mCancelAction->addTo( actionMenu );
880 connect( mCancelAction, SIGNAL( activated() ), 885 connect( mCancelAction, SIGNAL( activated() ),
881 mView, SLOT( toggleCancelIncidence() ) ); 886 mView, SLOT( toggleCancelIncidence() ) );
882 887
883 actionMenu->insertSeparator(); 888 actionMenu->insertSeparator();
884 889
885 action = new QAction( "purge_completed", i18n("Purge Completed"), 0, 890 action = new QAction( "purge_completed", i18n("Purge Completed"), 0,
886 this ); 891 this );
887 action->addTo( actionMenu ); 892 action->addTo( actionMenu );
888 connect( action, SIGNAL( activated() ), mView, SLOT( purgeCompleted() ) ); 893 connect( action, SIGNAL( activated() ), mView, SLOT( purgeCompleted() ) );
889 894
890 icon = loadPixmap( pathString + "search" ); 895 icon = loadPixmap( pathString + "search" );
891 QAction* search_action = new QAction( i18n("Search"), icon, i18n("Search..."), 0, this ); 896 QAction* search_action = new QAction( i18n("Search"), icon, i18n("Search..."), 0, this );
892 configureToolBarMenu->insertItem(icon, i18n("Search"), 120 , 5); 897 configureToolBarMenu->insertItem(icon, i18n("Search"), 120 , 5);
893 search_action->addTo( actionMenu ); 898 search_action->addTo( actionMenu );
894 connect( search_action, SIGNAL( activated() ), 899 connect( search_action, SIGNAL( activated() ),
895 mView->dialogManager(), SLOT( showSearchDialog() ) ); 900 mView->dialogManager(), SLOT( showSearchDialog() ) );
896 901
897 902
898 903
899 if ( KOPrefs::instance()->mShowFullMenu ) { 904 if ( KOPrefs::instance()->mShowFullMenu ) {
900 actionMenu->insertSeparator(); 905 actionMenu->insertSeparator();
901 actionMenu->insertItem( i18n("Configure Toolbar"),configureToolBarMenu ); 906 actionMenu->insertItem( i18n("Configure Toolbar"),configureToolBarMenu );
902 907
903 } 908 }
904 // actionMenu->insertSeparator(); 909 // actionMenu->insertSeparator();
905 action = new QAction( "import_qtopia", i18n("Import (*.ics/*.vcs) file"), 0, 910 action = new QAction( "import_qtopia", i18n("Import (*.ics/*.vcs) file"), 0,
906 this ); 911 this );
907 action->addTo( importMenu_X ); 912 action->addTo( importMenu_X );
908 connect( action, SIGNAL( activated() ), SLOT( importIcal() ) ); 913 connect( action, SIGNAL( activated() ), SLOT( importIcal() ) );
909 action = new QAction( "import_quick", i18n("Import last file"), 0, 914 action = new QAction( "import_quick", i18n("Import last file"), 0,
910 this ); 915 this );
911 action->addTo( importMenu_X ); 916 action->addTo( importMenu_X );
912 connect( action, SIGNAL( activated() ), SLOT( quickImportIcal() ) ); 917 connect( action, SIGNAL( activated() ), SLOT( quickImportIcal() ) );
913 importMenu_X->insertSeparator(); 918 importMenu_X->insertSeparator();
914 action = new QAction( "import_bday", i18n("Import Birthdays (KA/Pi)"), 0, 919 action = new QAction( "import_bday", i18n("Import Birthdays (KA/Pi)"), 0,
915 this ); 920 this );
916 action->addTo( importMenu_X ); 921 action->addTo( importMenu_X );
917 connect( action, SIGNAL( activated() ), SLOT( importBday() ) ); 922 connect( action, SIGNAL( activated() ), SLOT( importBday() ) );
918 //#ifndef DESKTOP_VERSION 923 //#ifndef DESKTOP_VERSION
919 importMenu_X->insertSeparator(); 924 importMenu_X->insertSeparator();
920 action = new QAction( "import_qtopia", i18n("Import Opie/Qtopia Cal."), 0, 925 action = new QAction( "import_qtopia", i18n("Import Opie/Qtopia Cal."), 0,
921 this ); 926 this );
922 action->addTo( importMenu_X ); 927 action->addTo( importMenu_X );
923 connect( action, SIGNAL( activated() ), SLOT( importQtopia() ) ); 928 connect( action, SIGNAL( activated() ), SLOT( importQtopia() ) );
924 //#else 929 //#else
925#ifdef _OL_IMPORT_ 930#ifdef _OL_IMPORT_
926 importMenu_X->insertSeparator(); 931 importMenu_X->insertSeparator();
927 action = new QAction( "import_ol", i18n("Import from OL"), 0, 932 action = new QAction( "import_ol", i18n("Import from OL"), 0,
928 this ); 933 this );
929 action->addTo( importMenu_X ); 934 action->addTo( importMenu_X );
930 connect( action, SIGNAL( activated() ), SLOT( importOL() ) ); 935 connect( action, SIGNAL( activated() ), SLOT( importOL() ) );
931#endif 936#endif
932 //#endif 937 //#endif
933 938
934 //importMenu->insertSeparator(); 939 //importMenu->insertSeparator();
935 action = new QAction( "load_cal", i18n("Load Calendar Backup"), 0, 940 action = new QAction( "load_cal", i18n("Load Calendar Backup"), 0,
936 this ); 941 this );
937 action->addTo( importMenu ); 942 action->addTo( importMenu );
938 connect( action, SIGNAL( activated() ), SLOT( loadCalendar() ) ); 943 connect( action, SIGNAL( activated() ), SLOT( loadCalendar() ) );
939 944
940 action = new QAction( "save_cal", i18n("Save Calendar Backup"), 0, 945 action = new QAction( "save_cal", i18n("Save Calendar Backup"), 0,
941 this ); 946 this );
942 action->addTo( importMenu ); 947 action->addTo( importMenu );
943 connect( action, SIGNAL( activated() ), SLOT( saveCalendar() ) ); 948 connect( action, SIGNAL( activated() ), SLOT( saveCalendar() ) );
944 importMenu->insertSeparator(); 949 importMenu->insertSeparator();
945 importMenu->insertItem( i18n("Import"), importMenu_X ); 950 importMenu->insertItem( i18n("Import"), importMenu_X );
946 //importMenu->insertSeparator(); 951 //importMenu->insertSeparator();
947 action = new QAction( "import_qtopia", i18n("Export VCalendar"), 0, 952 action = new QAction( "import_qtopia", i18n("Export VCalendar"), 0,
948 this ); 953 this );
949 action->addTo( exportMenu_X ); 954 action->addTo( exportMenu_X );
950 connect( action, SIGNAL( activated() ), SLOT( exportVCalendar() ) ); 955 connect( action, SIGNAL( activated() ), SLOT( exportVCalendar() ) );
951 956
952 957
953 //LR 958 //LR
954 QPopupMenu *ex2phone = new QPopupMenu( this ); 959 QPopupMenu *ex2phone = new QPopupMenu( this );
955 ex2phone->insertItem(i18n("Complete calendar..."), 1 ); 960 ex2phone->insertItem(i18n("Complete calendar..."), 1 );
956 ex2phone->insertItem(i18n("Filtered calendar..."), 2 ); 961 ex2phone->insertItem(i18n("Filtered calendar..."), 2 );
957 connect( ex2phone, SIGNAL( activated(int) ), this, SLOT( exportToPhone( int)) ); 962 connect( ex2phone, SIGNAL( activated(int) ), this, SLOT( exportToPhone( int)) );
958 exportMenu_X->insertItem( i18n("Export to phone"), ex2phone ); 963 exportMenu_X->insertItem( i18n("Export to phone"), ex2phone );
959 964
960 importMenu->insertItem( i18n("Export"), exportMenu_X ); 965 importMenu->insertItem( i18n("Export"), exportMenu_X );
961#ifndef DESKTOP_VERSION 966#ifndef DESKTOP_VERSION
962 //importMenu->insertSeparator(); 967 //importMenu->insertSeparator();
963 brAction = new QAction( "beam toggle", i18n("Beam receive enabled"), 0, 968 brAction = new QAction( "beam toggle", i18n("Beam receive enabled"), 0,
964 this ); 969 this );
965 brAction->addTo( beamMenu_X ); 970 brAction->addTo( beamMenu_X );
966 brAction->setToggleAction (true ) ; 971 brAction->setToggleAction (true ) ;
967 connect( brAction, SIGNAL( activated() ), this, SLOT( toggleBeamReceive() ) ); 972 connect( brAction, SIGNAL( activated() ), this, SLOT( toggleBeamReceive() ) );
968 973
969 action = new QAction( "beam all", i18n("Beam complete calendar..."), 0, 974 action = new QAction( "beam all", i18n("Beam complete calendar..."), 0,
970 this ); 975 this );
971 action->addTo( beamMenu_X ); 976 action->addTo( beamMenu_X );
972 connect( action, SIGNAL( activated() ), mView, SLOT( beamCalendar() ) ); 977 connect( action, SIGNAL( activated() ), mView, SLOT( beamCalendar() ) );
973 978
974 action = new QAction( "beam all", i18n("Beam filtered calendar..."), 0, 979 action = new QAction( "beam all", i18n("Beam filtered calendar..."), 0,
975 this ); 980 this );
976 action->addTo( beamMenu_X ); 981 action->addTo( beamMenu_X );
977 connect( action, SIGNAL( activated() ), mView, SLOT( beamFilteredCalendar()) ); 982 connect( action, SIGNAL( activated() ), mView, SLOT( beamFilteredCalendar()) );
978 importMenu->insertItem( i18n("Beam"), beamMenu_X ); 983 importMenu->insertItem( i18n("Beam"), beamMenu_X );
979#else 984#else
980 //importMenu->insertSeparator(); 985 //importMenu->insertSeparator();
981 icon = loadPixmap( pathString + "print" ); 986 icon = loadPixmap( pathString + "print" );
982 action = new QAction( i18n("Print calendar..."),icon,i18n("Print calendar..."), 0, this ); 987 action = new QAction( i18n("Print calendar..."),icon,i18n("Print calendar..."), 0, this );
983 action->addTo( beamMenu_X ); 988 action->addTo( beamMenu_X );
984 connect( action, SIGNAL( activated() ), 989 connect( action, SIGNAL( activated() ),
985 this, SLOT( printCal() ) ); 990 this, SLOT( printCal() ) );
986 991
987 icon = loadPixmap( pathString + "print" ); 992 icon = loadPixmap( pathString + "print" );
988 action = new QAction( i18n("Print agenda selection..."),icon,i18n("Print agenda selection..."), 0, this ); 993 action = new QAction( i18n("Print agenda selection..."),icon,i18n("Print agenda selection..."), 0, this );
989 action->addTo( beamMenu_X ); 994 action->addTo( beamMenu_X );
990 connect( action, SIGNAL( activated() ), 995 connect( action, SIGNAL( activated() ),
991 this, SLOT( printSel() ) ); 996 this, SLOT( printSel() ) );
992 action = new QAction( i18n("Print What's Next View..."),icon,i18n("Print What's Next View..."), 0, this ); 997 action = new QAction( i18n("Print What's Next View..."),icon,i18n("Print What's Next View..."), 0, this );
993 action->addTo( beamMenu_X ); 998 action->addTo( beamMenu_X );
994 connect( action, SIGNAL( activated() ), 999 connect( action, SIGNAL( activated() ),
995 mView->viewManager(), SIGNAL( printWNV() ) ); 1000 mView->viewManager(), SLOT( slotprintWNV() ) );
1001
1002 action = new QAction( i18n("Print selected event / todo..."),icon,i18n("Print selected event / todo..."), 0, this );
1003 action->addTo( beamMenu_X );
1004 connect( action, SIGNAL( activated() ),
1005 mView, SLOT( slotprintSelInc() ) );
1006
1007
996 importMenu->insertItem( i18n("Print"), beamMenu_X ); 1008 importMenu->insertItem( i18n("Print"), beamMenu_X );
997#endif 1009#endif
998 importMenu->insertSeparator(); 1010 importMenu->insertSeparator();
999 action = new QAction( "manage cat", i18n("Manage new categories..."), 0, 1011 action = new QAction( "manage cat", i18n("Manage new categories..."), 0,
1000 this ); 1012 this );
1001 action->addTo( importMenu ); 1013 action->addTo( importMenu );
1002 connect( action, SIGNAL( activated() ), mView, SLOT( manageCategories() ) ); 1014 connect( action, SIGNAL( activated() ), mView, SLOT( manageCategories() ) );
1003 importMenu->insertSeparator(); 1015 importMenu->insertSeparator();
1004 action = new QAction( "beam all", i18n("Save"), 0, 1016 action = new QAction( "beam all", i18n("Save"), 0,
1005 this ); 1017 this );
1006 action->addTo( importMenu ); 1018 action->addTo( importMenu );
1007 connect( action, SIGNAL( activated() ), this, SLOT( save() ) ); 1019 connect( action, SIGNAL( activated() ), this, SLOT( save() ) );
1008 action = new QAction( "beam all", i18n("Exit (+save)"), 0, 1020 action = new QAction( "beam all", i18n("Exit (+save)"), 0,
1009 this ); 1021 this );
1010 action->addTo( importMenu ); 1022 action->addTo( importMenu );
1011 connect( action, SIGNAL( activated() ), this, SLOT( close() ) ); 1023 connect( action, SIGNAL( activated() ), this, SLOT( close() ) );
1012 1024
1013 //menuBar->insertItem( "Configure",configureMenu ); 1025 //menuBar->insertItem( "Configure",configureMenu );
1014 //configureMenu->insertItem( "Toolbar",configureToolBarMenu ); 1026 //configureMenu->insertItem( "Toolbar",configureToolBarMenu );
1015 icon = loadPixmap( "korganizer/korganizer" ); 1027 icon = loadPixmap( "korganizer/korganizer" );
1016 1028
1017 action = new QAction( "Whats New", i18n("What's new?"), 0,this ); 1029 action = new QAction( "Whats New", i18n("What's new?"), 0,this );
1018 action->addTo( helpMenu ); 1030 action->addTo( helpMenu );
1019 connect( action, SIGNAL( activated() ), 1031 connect( action, SIGNAL( activated() ),
1020 SLOT( whatsNew() ) ); 1032 SLOT( whatsNew() ) );
1021 action = new QAction( "featureHowto", i18n("Features + hints..."), 0,this ); 1033 action = new QAction( "featureHowto", i18n("Features + hints..."), 0,this );
1022 action->addTo( helpMenu ); 1034 action->addTo( helpMenu );
1023 connect( action, SIGNAL( activated() ), 1035 connect( action, SIGNAL( activated() ),
1024 SLOT( features() ) ); 1036 SLOT( features() ) );
1025 action = new QAction( "Keys + Colors", i18n("Keys + Colors..."), 0, this ); 1037 action = new QAction( "Keys + Colors", i18n("Keys + Colors..."), 0, this );
1026 action->addTo( helpMenu ); 1038 action->addTo( helpMenu );
1027 connect( action, SIGNAL( activated() ), 1039 connect( action, SIGNAL( activated() ),
1028 SLOT( keyBindings() ) ); 1040 SLOT( keyBindings() ) );
1029 action = new QAction( "Sync Howto", i18n("Sync HowTo..."), 0,this ); 1041 action = new QAction( "Sync Howto", i18n("Sync HowTo..."), 0,this );
1030 action->addTo( helpMenu ); 1042 action->addTo( helpMenu );
1031 connect( action, SIGNAL( activated() ), 1043 connect( action, SIGNAL( activated() ),
1032 SLOT( synchowto() ) ); 1044 SLOT( synchowto() ) );
1033 action = new QAction( "KDE Sync Howto", i18n("KDE Sync HowTo..."), 0,this ); 1045 action = new QAction( "KDE Sync Howto", i18n("KDE Sync HowTo..."), 0,this );
1034 action->addTo( helpMenu ); 1046 action->addTo( helpMenu );
1035 connect( action, SIGNAL( activated() ), 1047 connect( action, SIGNAL( activated() ),
1036 SLOT( kdesynchowto() ) ); 1048 SLOT( kdesynchowto() ) );
1037 action = new QAction( "Multi Sync Howto", i18n("Multi Sync HowTo..."), 0,this ); 1049 action = new QAction( "Multi Sync Howto", i18n("Multi Sync HowTo..."), 0,this );
1038 action->addTo( helpMenu ); 1050 action->addTo( helpMenu );
1039 connect( action, SIGNAL( activated() ), 1051 connect( action, SIGNAL( activated() ),
1040 SLOT( multisynchowto() ) ); 1052 SLOT( multisynchowto() ) );
1041 action = new QAction( "Auto saving", i18n("Auto saving..."), 0, this ); 1053 action = new QAction( "Auto saving", i18n("Auto saving..."), 0, this );
1042 action->addTo( helpMenu ); 1054 action->addTo( helpMenu );
1043 connect( action, SIGNAL( activated() ), 1055 connect( action, SIGNAL( activated() ),
1044 SLOT( aboutAutoSaving() ) ); 1056 SLOT( aboutAutoSaving() ) );
1045 action = new QAction( "Problemd", i18n("Known Problems..."), 0,this ); 1057 action = new QAction( "Problemd", i18n("Known Problems..."), 0,this );
1046 action->addTo( helpMenu ); 1058 action->addTo( helpMenu );
1047 connect( action, SIGNAL( activated() ), 1059 connect( action, SIGNAL( activated() ),
1048 SLOT( aboutKnownBugs() ) ); 1060 SLOT( aboutKnownBugs() ) );
1049 action = new QAction( "Translate Howto", i18n("User translation..."), 0,this ); 1061 action = new QAction( "Translate Howto", i18n("User translation..."), 0,this );
1050 action->addTo( helpMenu ); 1062 action->addTo( helpMenu );
1051 connect( action, SIGNAL( activated() ), 1063 connect( action, SIGNAL( activated() ),
1052 SLOT( usertrans() ) ); 1064 SLOT( usertrans() ) );
1053 action = new QAction( "Frequently asked questions", i18n("FAQ..."), 0,this ); 1065 action = new QAction( "Frequently asked questions", i18n("FAQ..."), 0,this );
1054 action->addTo( helpMenu ); 1066 action->addTo( helpMenu );
1055 connect( action, SIGNAL( activated() ), 1067 connect( action, SIGNAL( activated() ),
1056 SLOT( faq() ) ); 1068 SLOT( faq() ) );
1057 action = new QAction( "licence", i18n("Licence..."), 0, this ); 1069 action = new QAction( "licence", i18n("Licence..."), 0, this );
1058 action->addTo( helpMenu ); 1070 action->addTo( helpMenu );
1059 connect( action, SIGNAL( activated() ), 1071 connect( action, SIGNAL( activated() ),
1060 SLOT( licence() ) ); 1072 SLOT( licence() ) );
1061 action = new QAction( "about", i18n("About..."), 0, this ); 1073 action = new QAction( "about", i18n("About..."), 0, this );
1062 action->addTo( helpMenu ); 1074 action->addTo( helpMenu );
1063 connect( action, SIGNAL( activated() ), 1075 connect( action, SIGNAL( activated() ),
1064 SLOT( about() ) ); 1076 SLOT( about() ) );
1065 //menuBar->insertSeparator(); 1077 //menuBar->insertSeparator();
1066 1078
1067 // ****************************************************** 1079 // ******************************************************
1068 // menubar icons 1080 // menubar icons
1069 1081
1070 1082
1071 1083
1072 //menuBar->insertItem( iconToolBar ); 1084 //menuBar->insertItem( iconToolBar );
1073 //xdays_action 1085 //xdays_action
1074 if (p-> mShowIconNewEvent) 1086 if (p-> mShowIconNewEvent)
1075 ne_action->addTo( iconToolBar ); 1087 ne_action->addTo( iconToolBar );
1076 if (p->mShowIconNewTodo ) 1088 if (p->mShowIconNewTodo )
1077 nt_action->addTo( iconToolBar ); 1089 nt_action->addTo( iconToolBar );
1078 if (p-> mShowIconSearch) 1090 if (p-> mShowIconSearch)
1079 search_action->addTo( iconToolBar ); 1091 search_action->addTo( iconToolBar );
1080 if (p-> mShowIconWhatsThis) 1092 if (p-> mShowIconWhatsThis)
1081 QWhatsThis::whatsThisButton ( iconToolBar ); 1093 QWhatsThis::whatsThisButton ( iconToolBar );
1082 if (p-> mShowIconNext) 1094 if (p-> mShowIconNext)
1083 whatsnext_action->addTo( viewToolBar ); 1095 whatsnext_action->addTo( viewToolBar );
1084 if (p-> mShowIconNextDays) 1096 if (p-> mShowIconNextDays)
1085 xdays_action->addTo( viewToolBar ); 1097 xdays_action->addTo( viewToolBar );
1086 if (p-> mShowIconJournal) 1098 if (p-> mShowIconJournal)
1087 viewjournal_action->addTo( viewToolBar ); 1099 viewjournal_action->addTo( viewToolBar );
1088 if (p-> mShowIconDay1) 1100 if (p-> mShowIconDay1)
1089 day1_action->addTo( viewToolBar ); 1101 day1_action->addTo( viewToolBar );
1090 if (p-> mShowIconDay5) 1102 if (p-> mShowIconDay5)
1091 day5_action->addTo( viewToolBar ); 1103 day5_action->addTo( viewToolBar );
1092 if (p-> mShowIconDay7) 1104 if (p-> mShowIconDay7)
1093 day7_action->addTo( viewToolBar ); 1105 day7_action->addTo( viewToolBar );
1094 if (p-> mShowIconDay6) 1106 if (p-> mShowIconDay6)
1095 day6_action->addTo( viewToolBar ); 1107 day6_action->addTo( viewToolBar );
1096 if (p-> mShowIconMonth) 1108 if (p-> mShowIconMonth)
1097 month_action->addTo( viewToolBar ); 1109 month_action->addTo( viewToolBar );
1098 if (p-> mShowIconList) 1110 if (p-> mShowIconList)
1099 showlist_action->addTo( viewToolBar ); 1111 showlist_action->addTo( viewToolBar );
1100 if (p-> mShowIconTodoview) 1112 if (p-> mShowIconTodoview)
1101 todoview_action->addTo( viewToolBar ); 1113 todoview_action->addTo( viewToolBar );
1102 1114
1103 icon = loadPixmap( pathString + "2leftarrowB" ); 1115 icon = loadPixmap( pathString + "2leftarrowB" );
1104 configureToolBarMenu->insertItem(icon, i18n("Prev. month"), 200); 1116 configureToolBarMenu->insertItem(icon, i18n("Prev. month"), 200);
1105 if (p-> mShowIconBackFast) { 1117 if (p-> mShowIconBackFast) {
1106 action = new QAction( i18n("Prev. month"), icon, i18n("Prev. month"),0 , this ); 1118 action = new QAction( i18n("Prev. month"), icon, i18n("Prev. month"),0 , this );
1107 connect( action, SIGNAL( activated() ), 1119 connect( action, SIGNAL( activated() ),
1108 mView, SLOT( goPreviousMonth() ) ); 1120 mView, SLOT( goPreviousMonth() ) );
1109 action->addTo( navigatorToolBar ); 1121 action->addTo( navigatorToolBar );
1110 } 1122 }
1111 icon = loadPixmap( pathString + "1leftarrowB" ); 1123 icon = loadPixmap( pathString + "1leftarrowB" );
1112 configureToolBarMenu->insertItem(icon, i18n("Go backward"), 210); 1124 configureToolBarMenu->insertItem(icon, i18n("Go backward"), 210);
1113 if (p-> mShowIconBack) { 1125 if (p-> mShowIconBack) {
1114 action = new QAction( i18n("Go backward"), icon, i18n("Go backward"),0 , this ); 1126 action = new QAction( i18n("Go backward"), icon, i18n("Go backward"),0 , this );
1115 connect( action, SIGNAL( activated() ), 1127 connect( action, SIGNAL( activated() ),
1116 mView, SLOT( goPrevious() ) ); 1128 mView, SLOT( goPrevious() ) );
1117 action->addTo( navigatorToolBar ); 1129 action->addTo( navigatorToolBar );
1118 } 1130 }
1119 icon = loadPixmap( pathString + "today" ); 1131 icon = loadPixmap( pathString + "today" );
1120 configureToolBarMenu->insertItem(icon, i18n("Go to Today"), 130); 1132 configureToolBarMenu->insertItem(icon, i18n("Go to Today"), 130);
1121 if (p-> mShowIconToday) 1133 if (p-> mShowIconToday)
1122 today_action->addTo( navigatorToolBar ); 1134 today_action->addTo( navigatorToolBar );
1123 icon = loadPixmap( pathString + "1rightarrowB" ); 1135 icon = loadPixmap( pathString + "1rightarrowB" );
1124 configureToolBarMenu->insertItem(icon, i18n("Go forward"), 220); 1136 configureToolBarMenu->insertItem(icon, i18n("Go forward"), 220);
1125 if (p-> mShowIconForward) { 1137 if (p-> mShowIconForward) {
1126 action = new QAction( i18n("Go forward"), icon, i18n("Go forward"),0 , this ); 1138 action = new QAction( i18n("Go forward"), icon, i18n("Go forward"),0 , this );
1127 connect( action, SIGNAL( activated() ), 1139 connect( action, SIGNAL( activated() ),
1128 mView, SLOT( goNext() ) ); 1140 mView, SLOT( goNext() ) );
1129 action->addTo( navigatorToolBar ); 1141 action->addTo( navigatorToolBar );
1130 } 1142 }
1131 icon = loadPixmap( pathString + "2rightarrowB" ); 1143 icon = loadPixmap( pathString + "2rightarrowB" );
1132 configureToolBarMenu->insertItem(icon, i18n("Next month"), 230); 1144 configureToolBarMenu->insertItem(icon, i18n("Next month"), 230);
1133 if (p-> mShowIconForwardFast) { 1145 if (p-> mShowIconForwardFast) {
1134 action = new QAction( i18n("Next month"), icon, i18n("Next month"),0 , this ); 1146 action = new QAction( i18n("Next month"), icon, i18n("Next month"),0 , this );
1135 connect( action, SIGNAL( activated() ), 1147 connect( action, SIGNAL( activated() ),
1136 mView, SLOT( goNextMonth() ) ); 1148 mView, SLOT( goNextMonth() ) );
1137 action->addTo( navigatorToolBar ); 1149 action->addTo( navigatorToolBar );
1138 } 1150 }
1139 1151
1140 1152
1141 configureToolBarMenu->insertItem(i18n("What's This?"), 300, 6); 1153 configureToolBarMenu->insertItem(i18n("What's This?"), 300, 6);
1142 1154
1143 if (p-> mShowIconNewEvent) 1155 if (p-> mShowIconNewEvent)
1144 configureToolBarMenu->setItemChecked( 10, true ); 1156 configureToolBarMenu->setItemChecked( 10, true );
1145 if (p->mShowIconNewTodo ) 1157 if (p->mShowIconNewTodo )
1146 configureToolBarMenu->setItemChecked( 20, true ); 1158 configureToolBarMenu->setItemChecked( 20, true );
1147 if (p-> mShowIconSearch) 1159 if (p-> mShowIconSearch)
1148 configureToolBarMenu->setItemChecked( 120, true ); 1160 configureToolBarMenu->setItemChecked( 120, true );
1149 if (p-> mShowIconList) 1161 if (p-> mShowIconList)
1150 configureToolBarMenu->setItemChecked( 30, true ); 1162 configureToolBarMenu->setItemChecked( 30, true );
1151 if (p-> mShowIconDay1) 1163 if (p-> mShowIconDay1)
1152 configureToolBarMenu->setItemChecked( 40, true ); 1164 configureToolBarMenu->setItemChecked( 40, true );
1153 if (p-> mShowIconDay5) 1165 if (p-> mShowIconDay5)
1154 configureToolBarMenu->setItemChecked( 50, true ); 1166 configureToolBarMenu->setItemChecked( 50, true );
1155 if (p-> mShowIconDay6) 1167 if (p-> mShowIconDay6)
1156 configureToolBarMenu->setItemChecked( 75, true ); 1168 configureToolBarMenu->setItemChecked( 75, true );
1157 if (p-> mShowIconDay7) 1169 if (p-> mShowIconDay7)
1158 configureToolBarMenu->setItemChecked( 60, true ); 1170 configureToolBarMenu->setItemChecked( 60, true );
1159 if (p-> mShowIconMonth) 1171 if (p-> mShowIconMonth)
1160 configureToolBarMenu->setItemChecked( 70, true ); 1172 configureToolBarMenu->setItemChecked( 70, true );
1161 if (p-> mShowIconTodoview) 1173 if (p-> mShowIconTodoview)
1162 configureToolBarMenu->setItemChecked( 80, true ); 1174 configureToolBarMenu->setItemChecked( 80, true );
1163 if (p-> mShowIconBackFast) 1175 if (p-> mShowIconBackFast)
1164 configureToolBarMenu->setItemChecked( 200, true ); 1176 configureToolBarMenu->setItemChecked( 200, true );
1165 if (p-> mShowIconBack) 1177 if (p-> mShowIconBack)
1166 configureToolBarMenu->setItemChecked( 210, true ); 1178 configureToolBarMenu->setItemChecked( 210, true );
1167 if (p-> mShowIconToday) 1179 if (p-> mShowIconToday)
1168 configureToolBarMenu->setItemChecked( 130, true ); 1180 configureToolBarMenu->setItemChecked( 130, true );
1169 if (p-> mShowIconForward) 1181 if (p-> mShowIconForward)
1170 configureToolBarMenu->setItemChecked( 220, true ); 1182 configureToolBarMenu->setItemChecked( 220, true );
1171 if (p-> mShowIconForwardFast) 1183 if (p-> mShowIconForwardFast)
1172 configureToolBarMenu->setItemChecked( 230, true ); 1184 configureToolBarMenu->setItemChecked( 230, true );
1173 if (p-> mShowIconNextDays) 1185 if (p-> mShowIconNextDays)
1174 configureToolBarMenu->setItemChecked( 100, true ); 1186 configureToolBarMenu->setItemChecked( 100, true );
1175 if (p-> mShowIconNext) 1187 if (p-> mShowIconNext)
1176 configureToolBarMenu->setItemChecked( 110, true ); 1188 configureToolBarMenu->setItemChecked( 110, true );
1177 if (p-> mShowIconJournal) 1189 if (p-> mShowIconJournal)
1178 configureToolBarMenu->setItemChecked( 90, true ); 1190 configureToolBarMenu->setItemChecked( 90, true );
1179 if (p-> mShowIconWhatsThis) 1191 if (p-> mShowIconWhatsThis)
1180 configureToolBarMenu->setItemChecked( 300, true ); 1192 configureToolBarMenu->setItemChecked( 300, true );
1181 if (p-> mShowIconWeekNum) 1193 if (p-> mShowIconWeekNum)
1182 configureToolBarMenu->setItemChecked( 400, true ); 1194 configureToolBarMenu->setItemChecked( 400, true );
1183 if (!p-> mShowIconStretch) { 1195 if (!p-> mShowIconStretch) {
1184 QLabel* dummy = new QLabel( iconToolBar ); 1196 QLabel* dummy = new QLabel( iconToolBar );
1185 dummy->setBackgroundColor( iconToolBar->backgroundColor() ); 1197 dummy->setBackgroundColor( iconToolBar->backgroundColor() );
1186 dummy->setMinimumWidth( 0 ); 1198 dummy->setMinimumWidth( 0 );
1187 iconToolBar->setStretchableWidget ( dummy ) ; 1199 iconToolBar->setStretchableWidget ( dummy ) ;
1188 } 1200 }
1189 else { 1201 else {
1190 iconToolBar->setHorizontalStretchable (true ); 1202 iconToolBar->setHorizontalStretchable (true );
1191 viewToolBar->setHorizontalStretchable (true ); 1203 viewToolBar->setHorizontalStretchable (true );
1192 navigatorToolBar->setHorizontalStretchable (true ); 1204 navigatorToolBar->setHorizontalStretchable (true );
1193 iconToolBar->setVerticalStretchable (true ); 1205 iconToolBar->setVerticalStretchable (true );
1194 viewToolBar->setVerticalStretchable (true ); 1206 viewToolBar->setVerticalStretchable (true );
1195 navigatorToolBar->setVerticalStretchable (true ); 1207 navigatorToolBar->setVerticalStretchable (true );
1196 configureToolBarMenu->setItemChecked( 5, true ); 1208 configureToolBarMenu->setItemChecked( 5, true );
1197 } 1209 }
1198 if (p-> mShowIconFilter) 1210 if (p-> mShowIconFilter)
1199 configureToolBarMenu->setItemChecked( 7, true ); 1211 configureToolBarMenu->setItemChecked( 7, true );
1200 if (p-> mShowIconOnetoolbar) 1212 if (p-> mShowIconOnetoolbar)
1201 configureToolBarMenu->setItemChecked( 6, true ); 1213 configureToolBarMenu->setItemChecked( 6, true );
1202 1214
1203 1215
1204 if ( filterMenubar ) 1216 if ( filterMenubar )
1205 connect( mView->filterView(), SIGNAL( filterChanged() ), SLOT( updateFilterToolbar() ) ); 1217 connect( mView->filterView(), SIGNAL( filterChanged() ), SLOT( updateFilterToolbar() ) );
1206 connect( configureToolBarMenu, SIGNAL( activated( int ) ),this, SLOT(configureToolBar( int ) ) ); 1218 connect( configureToolBarMenu, SIGNAL( activated( int ) ),this, SLOT(configureToolBar( int ) ) );
1207 configureAgenda( p->mHourSize ); 1219 configureAgenda( p->mHourSize );
1208 connect( configureAgendaMenu, SIGNAL( activated( int ) ),this, SLOT(configureAgenda( int ) ) ); 1220 connect( configureAgendaMenu, SIGNAL( activated( int ) ),this, SLOT(configureAgenda( int ) ) );
1209} 1221}
1210 1222
1211void MainWindow::exportToPhone( int mode ) 1223void MainWindow::exportToPhone( int mode )
1212{ 1224{
1213 1225
1214 //ex2phone->insertItem(i18n("Complete calendar..."), 1 ); 1226 //ex2phone->insertItem(i18n("Complete calendar..."), 1 );
1215 //ex2phone->insertItem(i18n("Filtered calendar..."), 2 ); 1227 //ex2phone->insertItem(i18n("Filtered calendar..."), 2 );
1216 KOex2phonePrefs ex2phone; 1228 KOex2phonePrefs ex2phone;
1217 1229
1218 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection ); 1230 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection );
1219 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice ); 1231 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice );
1220 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel ); 1232 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel );
1221 if ( mode == 1 ) 1233 if ( mode == 1 )
1222 ex2phone.setCaption(i18n("Export complete calendar")); 1234 ex2phone.setCaption(i18n("Export complete calendar"));
1223 if ( mode == 2 ) 1235 if ( mode == 2 )
1224 ex2phone.setCaption(i18n("Export filtered calendar")); 1236 ex2phone.setCaption(i18n("Export filtered calendar"));
1225 1237
1226 if ( !ex2phone.exec() ) { 1238 if ( !ex2phone.exec() ) {
1227 return; 1239 return;
1228 } 1240 }
1229 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text(); 1241 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text();
1230 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text(); 1242 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text();
1231 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text(); 1243 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text();
1232 1244
1233 int inFuture = 0; 1245 int inFuture = 0;
1234 if ( ex2phone.mWriteBackFuture->isChecked() ) 1246 if ( ex2phone.mWriteBackFuture->isChecked() )
1235 inFuture = ex2phone.mWriteBackFutureWeeks->value(); 1247 inFuture = ex2phone.mWriteBackFutureWeeks->value();
1236 QPtrList<Incidence> delSel; 1248 QPtrList<Incidence> delSel;
1237 if ( mode == 1 ) 1249 if ( mode == 1 )
1238 delSel = mCalendar->rawIncidences(); 1250 delSel = mCalendar->rawIncidences();
1239 if ( mode == 2 ) 1251 if ( mode == 2 )
1240 delSel = mCalendar->incidences(); 1252 delSel = mCalendar->incidences();
1241 CalendarLocal* cal = new CalendarLocal(); 1253 CalendarLocal* cal = new CalendarLocal();
1242 cal->setLocalTime(); 1254 cal->setLocalTime();
1243 Incidence *incidence = delSel.first(); 1255 Incidence *incidence = delSel.first();
1244 QDateTime cur = QDateTime::currentDateTime().addDays( -7 ); 1256 QDateTime cur = QDateTime::currentDateTime().addDays( -7 );
1245 QDateTime end = cur.addDays( ( inFuture +1 ) *7 ); 1257 QDateTime end = cur.addDays( ( inFuture +1 ) *7 );
1246 while ( incidence ) { 1258 while ( incidence ) {
1247 if ( incidence->type() != "Journal" ) { 1259 if ( incidence->type() != "Journal" ) {
1248 bool add = true; 1260 bool add = true;
1249 if ( inFuture ) { 1261 if ( inFuture ) {
1250 QDateTime dt; 1262 QDateTime dt;
1251 if ( incidence->type() == "Todo" ) { 1263 if ( incidence->type() == "Todo" ) {
1252 Todo * t = (Todo*)incidence; 1264 Todo * t = (Todo*)incidence;
1253 if ( t->hasDueDate() ) 1265 if ( t->hasDueDate() )
1254 dt = t->dtDue(); 1266 dt = t->dtDue();
1255 else 1267 else
1256 dt = cur.addSecs( 62 ); 1268 dt = cur.addSecs( 62 );
1257 } 1269 }
1258 else { 1270 else {
1259 bool ok; 1271 bool ok;
1260 dt = incidence->getNextOccurence( cur, &ok ); 1272 dt = incidence->getNextOccurence( cur, &ok );
1261 if ( !ok ) 1273 if ( !ok )
1262 dt = cur.addSecs( -62 ); 1274 dt = cur.addSecs( -62 );
1263 } 1275 }
1264 if ( dt < cur || dt > end ) { 1276 if ( dt < cur || dt > end ) {
1265 add = false; 1277 add = false;
1266 } 1278 }
1267 } 1279 }
1268 if ( add ) { 1280 if ( add ) {
1269 Incidence *in = incidence->clone(); 1281 Incidence *in = incidence->clone();
1270 cal->addIncidence( in ); 1282 cal->addIncidence( in );
1271 } 1283 }
1272 } 1284 }
1273 incidence = delSel.next(); 1285 incidence = delSel.next();
1274 } 1286 }
1275 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice, 1287 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice,
1276 KPimGlobalPrefs::instance()->mEx2PhoneConnection, 1288 KPimGlobalPrefs::instance()->mEx2PhoneConnection,
1277 KPimGlobalPrefs::instance()->mEx2PhoneModel ); 1289 KPimGlobalPrefs::instance()->mEx2PhoneModel );
1278 1290
1279 setCaption( i18n("Writing to phone...")); 1291 setCaption( i18n("Writing to phone..."));
1280 if ( PhoneFormat::writeToPhone( cal ) ) 1292 if ( PhoneFormat::writeToPhone( cal ) )
1281 setCaption( i18n("Export to phone successful!")); 1293 setCaption( i18n("Export to phone successful!"));
1282 else 1294 else
1283 setCaption( i18n("Error exporting to phone!")); 1295 setCaption( i18n("Error exporting to phone!"));
1284 delete cal; 1296 delete cal;
1285} 1297}
1286 1298
1287 1299
1288void MainWindow::setDefaultPreferences() 1300void MainWindow::setDefaultPreferences()
1289{ 1301{
1290 KOPrefs *p = KOPrefs::instance(); 1302 KOPrefs *p = KOPrefs::instance();
1291 1303
1292 p->mCompactDialogs = true; 1304 p->mCompactDialogs = true;
1293 p->mConfirm = true; 1305 p->mConfirm = true;
1294 // p->mEnableQuickTodo = false; 1306 // p->mEnableQuickTodo = false;
1295 1307
1296} 1308}
1297 1309
1298QString MainWindow::resourcePath() 1310QString MainWindow::resourcePath()
1299{ 1311{
1300 return KGlobal::iconLoader()->iconPath(); 1312 return KGlobal::iconLoader()->iconPath();
1301} 1313}
1302 1314
1303void MainWindow::displayText( QString text ,QString cap ) 1315void MainWindow::displayText( QString text ,QString cap )
1304{ 1316{
1305 QDialog dia( this, "name", true ); ; 1317 QDialog dia( this, "name", true ); ;
1306 dia.setCaption( cap ); 1318 dia.setCaption( cap );
1307 QVBoxLayout* lay = new QVBoxLayout( &dia ); 1319 QVBoxLayout* lay = new QVBoxLayout( &dia );
1308 lay->setSpacing( 3 ); 1320 lay->setSpacing( 3 );
1309 lay->setMargin( 3 ); 1321 lay->setMargin( 3 );
1310 QTextBrowser tb ( &dia ); 1322 QTextBrowser tb ( &dia );
1311 lay->addWidget( &tb ); 1323 lay->addWidget( &tb );
1312 tb.setText( text ); 1324 tb.setText( text );
1313#ifdef DESKTOP_VERSION 1325#ifdef DESKTOP_VERSION
1314 dia.resize( 640, 480); 1326 dia.resize( 640, 480);
1315#else 1327#else
1316 dia.showMaximized(); 1328 dia.showMaximized();
1317#endif 1329#endif
1318 dia.exec(); 1330 dia.exec();
1319} 1331}
1320 1332
1321void MainWindow::features() 1333void MainWindow::features()
1322{ 1334{
1323 1335
1324 KApplication::showFile( i18n("KO/Pi Features and hints"), "kdepim/korganizer/featuresKOPI.txt" ); 1336 KApplication::showFile( i18n("KO/Pi Features and hints"), "kdepim/korganizer/featuresKOPI.txt" );
1325} 1337}
1326 1338
1327void MainWindow::usertrans() 1339void MainWindow::usertrans()
1328{ 1340{
1329 1341
1330 KApplication::showFile( i18n("KO/Pi User translation HowTo"), "kdepim/korganizer/usertranslationHOWTO.txt" ); 1342 KApplication::showFile( i18n("KO/Pi User translation HowTo"), "kdepim/korganizer/usertranslationHOWTO.txt" );
1331} 1343}
1332 1344
1333void MainWindow::kdesynchowto() 1345void MainWindow::kdesynchowto()
1334{ 1346{
1335 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/Zaurus-KDE_syncHowTo.txt" ); 1347 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/Zaurus-KDE_syncHowTo.txt" );
1336} 1348}
1337void MainWindow::multisynchowto() 1349void MainWindow::multisynchowto()
1338{ 1350{
1339 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/MultiSyncHowTo.txt" ); 1351 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/MultiSyncHowTo.txt" );
1340} 1352}
1341void MainWindow::synchowto() 1353void MainWindow::synchowto()
1342{ 1354{
1343 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" ); 1355 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" );
1344} 1356}
1345void MainWindow::faq() 1357void MainWindow::faq()
1346{ 1358{
1347 KApplication::showFile( i18n("KO/Pi FAQ"), "kdepim/korganizer/kopiFAQ.txt" ); 1359 KApplication::showFile( i18n("KO/Pi FAQ"), "kdepim/korganizer/kopiFAQ.txt" );
1348 1360
1349} 1361}
1350void MainWindow::whatsNew() 1362void MainWindow::whatsNew()
1351{ 1363{
1352 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" ); 1364 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" );
1353 1365
1354} 1366}
1355void MainWindow::licence() 1367void MainWindow::licence()
1356{ 1368{
1357 KApplication::showLicence(); 1369 KApplication::showLicence();
1358 1370
1359} 1371}
1360void MainWindow::about() 1372void MainWindow::about()
1361{ 1373{
1362 QString version; 1374 QString version;
1363#include <../version> 1375#include <../version>
1364 QMessageBox::about( this, i18n("About KOrganizer/Pi"), 1376 QMessageBox::about( this, i18n("About KOrganizer/Pi"),
1365 i18n("KOrganizer/Platform-independent\n") + 1377 i18n("KOrganizer/Platform-independent\n") +
1366 "(KO/Pi) " + version + " - " + 1378 "(KO/Pi) " + version + " - " +
1367 1379
1368#ifdef DESKTOP_VERSION 1380#ifdef DESKTOP_VERSION
1369 i18n("Desktop Edition\n") + 1381 i18n("Desktop Edition\n") +
1370#else 1382#else
1371 i18n("PDA-Edition\nfor: Zaurus 5x00/7x0/860/3000/6000\n") + 1383 i18n("PDA-Edition\nfor: Zaurus 5x00/7x0/860/3000/6000\n") +
1372#endif 1384#endif
1373 i18n("(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi is based on KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) and the KDE team.\nKOrganizer/Pi is licensed under the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.pi-sync.info --- www.korganizer.org\nSpecial thanks to Michael and Ben\nfor intensive testing!") ); 1385 i18n("(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi is based on KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) and the KDE team.\nKOrganizer/Pi is licensed under the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.pi-sync.info --- www.korganizer.org\nSpecial thanks to Michael and Ben\nfor intensive testing!") );
1374} 1386}
1375void MainWindow::keyBindings() 1387void MainWindow::keyBindings()
1376{ 1388{
1377 QString cap = i18n("KO/Pi Keys + Colors"); 1389 QString cap = i18n("KO/Pi Keys + Colors");
1378 QString text = i18n("<p><h2>KO/Pi key shortcuts:</h2></p>\n") + 1390 QString text = i18n("<p><h2>KO/Pi key shortcuts:</h2></p>\n") +
1379 i18n("<p><b>H</b>: This help dialog | <b>S</b>: Search dialog</p>\n")+ 1391 i18n("<p><b>H</b>: This help dialog | <b>S</b>: Search dialog</p>\n")+
1380 i18n("<p><b>I</b>: Show info for selected event/todo</p>\n") + 1392 i18n("<p><b>I</b>: Show info for selected event/todo</p>\n") +
1381 i18n("<p><b>Space</b>: Toggle fullscreen | <b>P</b>: Date picker</p>\n")+ 1393 i18n("<p><b>Space</b>: Toggle fullscreen | <b>P</b>: Date picker</p>\n")+
1382 i18n("<p><b>F</b>: Toggle filterview |<b>F+ctrl</b>: Edit filter </p>\n")+ 1394 i18n("<p><b>F</b>: Toggle filterview |<b>F+ctrl</b>: Edit filter </p>\n")+
1383 i18n("<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n")+ 1395 i18n("<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n")+
1384 i18n("<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n")+ 1396 i18n("<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n")+
1385 i18n("<p><b>N</b>: Next days view| <b>W</b>: What's next view\n ")+ 1397 i18n("<p><b>N</b>: Next days view| <b>W</b>: What's next view\n ")+
1386 i18n("<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n")+ 1398 i18n("<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n")+
1387 i18n("<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n")+ 1399 i18n("<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n")+
1388 i18n("<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n")+ 1400 i18n("<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n")+
1389 i18n("<p><b>K</b>: Week view in Month view syle</p>\n")+ 1401 i18n("<p><b>K</b>: Week view in Month view syle</p>\n")+
1390 i18n("<p><b>E</b>: Edit selected item |<b> E+ctrl</b>: New Event</p>\n")+ 1402 i18n("<p><b>E</b>: Edit selected item |<b> E+ctrl</b>: New Event</p>\n")+
1391 i18n("<p><b>T</b>: Goto today | <b>T+ctrl</b>: New Todo</p>\n")+ 1403 i18n("<p><b>T</b>: Goto today | <b>T+ctrl</b>: New Todo</p>\n")+
1392 i18n("<p><b>S+ctrl</b>: Add sub-todo | <b>X</b>: Toggle datenavigator</p>\n")+ 1404 i18n("<p><b>S+ctrl</b>: Add sub-todo | <b>X</b>: Toggle datenavigator</p>\n")+
1393 i18n("<p><b>+,-</b> : Zoom in/out agenda | <b>A</b>: Toggle allday agenda height</p>\n")+ 1405 i18n("<p><b>+,-</b> : Zoom in/out agenda | <b>A</b>: Toggle allday agenda height</p>\n")+
1394 i18n("<p><b>C</b>: Show current time in agenda view</p>\n")+ 1406 i18n("<p><b>C</b>: Show current time in agenda view</p>\n")+
1395 i18n("<p><b>B</b>: Edit description (details) of selected item</p>\n")+ 1407 i18n("<p><b>B</b>: Edit description (details) of selected item</p>\n")+
1396 i18n("<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n")+ 1408 i18n("<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n")+
1397 i18n("<p><b>left</b>: Prev. week | <b>left+ctrl</b>: Prev. month</p>\n")+ 1409 i18n("<p><b>left</b>: Prev. week | <b>left+ctrl</b>: Prev. month</p>\n")+
1398 i18n("<p><b>del,backspace</b>: Delete selected item</p>\n")+ 1410 i18n("<p><b>del,backspace</b>: Delete selected item</p>\n")+
1399 i18n("<p><h3>In agenda view:</h3></p>\n") + 1411 i18n("<p><h3>In agenda view:</h3></p>\n") +
1400 i18n("<p><b>up/down</b>: Scroll agenda view</p>\n")+ 1412 i18n("<p><b>up/down</b>: Scroll agenda view</p>\n")+
1401 i18n("<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n")+ 1413 i18n("<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n")+
1402 i18n("<p><h3>In todo view:</h3></p>\n") + 1414 i18n("<p><h3>In todo view:</h3></p>\n") +
1403 i18n("<p><b>shift+U</b>: <b>U</b>nparent todo (make root todo)</p>\n")+ 1415 i18n("<p><b>shift+U</b>: <b>U</b>nparent todo (make root todo)</p>\n")+
1404 i18n("<p><b>shift+S</b>: Make <b>S</b>ubtodo (reparent todo)</p>\n")+ 1416 i18n("<p><b>shift+S</b>: Make <b>S</b>ubtodo (reparent todo)</p>\n")+
1405 i18n("<p><b>shift+P</b>: Make new <b>P</b>arent for todo selected with shift+S</p>\n")+ 1417 i18n("<p><b>shift+P</b>: Make new <b>P</b>arent for todo selected with shift+S</p>\n")+
1406 i18n("<p><b>Q</b>: Toggle quick todo line edit.</p>\n")+ 1418 i18n("<p><b>Q</b>: Toggle quick todo line edit.</p>\n")+
1407 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+ 1419 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+
1408 i18n("<p><b>return</b>: Mark item as completed+one step down.</p>\n")+ 1420 i18n("<p><b>return</b>: Mark item as completed+one step down.</p>\n")+
1409 i18n("<p><b>return+shift</b>: Mark item as not completed+one step down</p>\n")+ 1421 i18n("<p><b>return+shift</b>: Mark item as not completed+one step down</p>\n")+
1410 i18n("<p><h3>In list view:</h3></p>\n") + 1422 i18n("<p><h3>In list view:</h3></p>\n") +
1411 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+ 1423 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+
1412 i18n("<p><b>return</b>: Select item+one step down</p>\n")+ 1424 i18n("<p><b>return</b>: Select item+one step down</p>\n")+
1413 i18n("<p><b>return+shift</b>: Deselect item+one step down</p>\n")+ 1425 i18n("<p><b>return+shift</b>: Deselect item+one step down</p>\n")+
1414 i18n("<p><b>up/down</b>: Next/prev item</p>\n")+ 1426 i18n("<p><b>up/down</b>: Next/prev item</p>\n")+
1415 i18n("<p><b>ctrl+up/down</b>: Goto up/down by 20% of items</p>\n")+ 1427 i18n("<p><b>ctrl+up/down</b>: Goto up/down by 20% of items</p>\n")+
1416 i18n("<p><b>shift+up/down</b>: Goto first/last item</p>\n")+ 1428 i18n("<p><b>shift+up/down</b>: Goto first/last item</p>\n")+
1417 i18n("<p><h3>In event/todo viewer:</h3></p>\n") + 1429 i18n("<p><h3>In event/todo viewer:</h3></p>\n") +
1418 i18n("<p><b>I,C</b>: Close dialog.</p>\n")+ 1430 i18n("<p><b>I,C</b>: Close dialog.</p>\n")+
1419 i18n("<p><b>A</b>: Show agenda view.</p>\n")+ 1431 i18n("<p><b>A</b>: Show agenda view.</p>\n")+
1420 i18n("<p><b>E</b>: Edit item</p>\n") + 1432 i18n("<p><b>E</b>: Edit item</p>\n") +
1421 i18n("<p><h2>KO/Pi icon colors:</h2></p>\n") + 1433 i18n("<p><h2>KO/Pi icon colors:</h2></p>\n") +
1422 i18n("<p><b>(for square icons in agenda and month view)</b></p>\n") + 1434 i18n("<p><b>(for square icons in agenda and month view)</b></p>\n") +
1423 i18n("<p><b>Cross</b>: Item cancelled.([c] in Whats'Next view)</p>\n")+ 1435 i18n("<p><b>Cross</b>: Item cancelled.([c] in Whats'Next view)</p>\n")+
1424 i18n("<p><b>Red</b>: Alarm set.([a] in Whats'Next view)</p>\n")+ 1436 i18n("<p><b>Red</b>: Alarm set.([a] in Whats'Next view)</p>\n")+
1425 i18n("<p><b>Blue</b>: Recurrent event.([r] in Whats'Next view)</p>\n")+ 1437 i18n("<p><b>Blue</b>: Recurrent event.([r] in Whats'Next view)</p>\n")+
1426 i18n("<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n")+ 1438 i18n("<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n")+
1427 i18n("<p><b>Black</b>: Event/todo with attendees. You are the organizer!</p>\n")+ 1439 i18n("<p><b>Black</b>: Event/todo with attendees. You are the organizer!</p>\n")+
1428 i18n("<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n") + 1440 i18n("<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n") +
1429 i18n("<p><b>White</b>: Item readonly</p>\n"); 1441 i18n("<p><b>White</b>: Item readonly</p>\n");
1430 displayText( text, cap); 1442 displayText( text, cap);
1431} 1443}
1432void MainWindow::aboutAutoSaving() 1444void MainWindow::aboutAutoSaving()
1433{ 1445{
1434 QString text = i18n("After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configurable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n"); 1446 QString text = i18n("After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configurable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n");
1435 1447
1436 KApplication::showText( i18n("Auto Saving in KOrganizer/Pi"), text); 1448 KApplication::showText( i18n("Auto Saving in KOrganizer/Pi"), text);
1437 1449
1438} 1450}
1439void MainWindow::aboutKnownBugs() 1451void MainWindow::aboutKnownBugs()
1440{ 1452{
1441 QMessageBox* msg; 1453 QMessageBox* msg;
1442 msg = new QMessageBox( i18n("Known Problems in KOrganizer/Pi"), 1454 msg = new QMessageBox( i18n("Known Problems in KOrganizer/Pi"),
1443 i18n("1) Importing *.vcs or *.ics files from\nother applications may not work properly,\nif there are events with properties\nKO/Pi does not support.\n")+ 1455 i18n("1) Importing *.vcs or *.ics files from\nother applications may not work properly,\nif there are events with properties\nKO/Pi does not support.\n")+
1444 i18n("2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n")+ 1456 i18n("2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n")+
1445 i18n("\nPlease report unexpected behaviour to\nlutz@pi-sync.info\n") + 1457 i18n("\nPlease report unexpected behaviour to\nlutz@pi-sync.info\n") +
1446 i18n("\nor report them in the bugtracker on\n") + 1458 i18n("\nor report them in the bugtracker on\n") +
1447 i18n("\nhttp://sourceforge.net/projects/kdepimpi\n"), 1459 i18n("\nhttp://sourceforge.net/projects/kdepimpi\n"),
1448 QMessageBox::NoIcon, 1460 QMessageBox::NoIcon,
1449 QMessageBox::Ok, 1461 QMessageBox::Ok,
1450 QMessageBox::NoButton, 1462 QMessageBox::NoButton,
1451 QMessageBox::NoButton); 1463 QMessageBox::NoButton);
1452 msg->exec(); 1464 msg->exec();
1453 delete msg; 1465 delete msg;
1454 1466
1455} 1467}
1456 1468
1457QString MainWindow::defaultFileName() 1469QString MainWindow::defaultFileName()
1458{ 1470{
1459 return locateLocal( "data", "korganizer/mycalendar.ics" ); 1471 return locateLocal( "data", "korganizer/mycalendar.ics" );
1460} 1472}
1461QString MainWindow::syncFileName() 1473QString MainWindow::syncFileName()
1462{ 1474{
1463#ifdef DESKTOP_VERSION 1475#ifdef DESKTOP_VERSION
1464 return locateLocal( "tmp", "synccalendar.ics" ); 1476 return locateLocal( "tmp", "synccalendar.ics" );
1465#else 1477#else
1466 return QString( "/tmp/synccalendar.ics" ); 1478 return QString( "/tmp/synccalendar.ics" );
1467#endif 1479#endif
1468} 1480}
1469void MainWindow::updateWeek(QDate seda) 1481void MainWindow::updateWeek(QDate seda)
1470{ 1482{
1471 int weekNum = 0; 1483 int weekNum = 0;
1472 QDate d = QDate ( seda.year(), 1,1); 1484 QDate d = QDate ( seda.year(), 1,1);
1473 seda = seda.addDays( 1-seda.dayOfWeek() );//we are on monday 1485 seda = seda.addDays( 1-seda.dayOfWeek() );//we are on monday
1474 if ( seda.addDays(6).year() != seda.year() ) { 1486 if ( seda.addDays(6).year() != seda.year() ) {
1475 if ( seda.year() != d.year() ) { 1487 if ( seda.year() != d.year() ) {
1476 if ( d.dayOfWeek() > 4 ) 1488 if ( d.dayOfWeek() > 4 )
1477 d = QDate ( seda.year(), 1,1); 1489 d = QDate ( seda.year(), 1,1);
1478 else 1490 else
1479 weekNum = 1; 1491 weekNum = 1;
1480 } else { 1492 } else {
1481 QDate dd( seda.year()+1, 1,1); 1493 QDate dd( seda.year()+1, 1,1);
1482 if ( dd.dayOfWeek() <= 4 ) 1494 if ( dd.dayOfWeek() <= 4 )
1483 weekNum = 1; 1495 weekNum = 1;
1484 } 1496 }
1485 } 1497 }
1486 if ( weekNum == 0 ){ 1498 if ( weekNum == 0 ){
1487 int dow = d.dayOfWeek(); 1499 int dow = d.dayOfWeek();
1488 if ( dow <= 4 ) 1500 if ( dow <= 4 )
1489 d = d.addDays( 1-dow ); 1501 d = d.addDays( 1-dow );
1490 else // 5,6,7 1502 else // 5,6,7
1491 d = d.addDays( 8-dow ); 1503 d = d.addDays( 8-dow );
1492 // we have the first week of the year.we are on monday 1504 // we have the first week of the year.we are on monday
1493 weekNum = d.daysTo( seda ) / 7 +1; 1505 weekNum = d.daysTo( seda ) / 7 +1;
1494 } 1506 }
1495 1507
1496 mWeekPixmap.fill( mWeekBgColor ); 1508 mWeekPixmap.fill( mWeekBgColor );
1497 QPainter p ( &mWeekPixmap ); 1509 QPainter p ( &mWeekPixmap );
1498 p.setFont( mWeekFont ); 1510 p.setFont( mWeekFont );
1499 p.drawText( 0,0,mWeekPixmap.width(), mWeekPixmap.height(),AlignCenter, QString::number( weekNum) ); 1511 p.drawText( 0,0,mWeekPixmap.width(), mWeekPixmap.height(),AlignCenter, QString::number( weekNum) );
1500 p.end(); 1512 p.end();
1501 QIconSet icon3 ( mWeekPixmap ); 1513 QIconSet icon3 ( mWeekPixmap );
1502 mWeekAction->setIconSet ( icon3 ); 1514 mWeekAction->setIconSet ( icon3 );
1503 1515
1504} 1516}
1505void MainWindow::updateWeekNum(const DateList &selectedDates) 1517void MainWindow::updateWeekNum(const DateList &selectedDates)
1506{ 1518{
1507 updateWeek( selectedDates.first() ); 1519 updateWeek( selectedDates.first() );
1508} 1520}
1509void MainWindow::processIncidenceSelection( Incidence *incidence ) 1521void MainWindow::processIncidenceSelection( Incidence *incidence )
1510{ 1522{
1511 1523
1512 if ( !incidence ) { 1524 if ( !incidence ) {
1513 enableIncidenceActions( false ); 1525 enableIncidenceActions( false );
1514 1526
1515 mNewSubTodoAction->setEnabled( false ); 1527 mNewSubTodoAction->setEnabled( false );
1516 setCaptionToDates(); 1528 setCaptionToDates();
1517 return; 1529 return;
1518 1530
1519 } 1531 }
1520 1532
1521 //KGlobal::locale()->formatDateTime(nextA, true); 1533 //KGlobal::locale()->formatDateTime(nextA, true);
1522 QString startString = ""; 1534 QString startString = "";
1523 if ( incidence->type() != "Todo" ) { 1535 if ( incidence->type() != "Todo" ) {
1524 if ( incidence->dtStart().date() < incidence->dtEnd().date() ) { 1536 if ( incidence->dtStart().date() < incidence->dtEnd().date() ) {
1525 if ( incidence->doesFloat() ) { 1537 if ( incidence->doesFloat() ) {
1526 startString += ": "+incidence->dtStartDateStr( true ); 1538 startString += ": "+incidence->dtStartDateStr( true );
1527 startString += " --- "+((Event*)incidence)->dtEndDateStr( true ); 1539 startString += " --- "+((Event*)incidence)->dtEndDateStr( true );
1528 1540
1529 } else { 1541 } else {
1530 startString = ": "+incidence->dtStartStr(true); 1542 startString = ": "+incidence->dtStartStr(true);
1531 startString += " --- "+((Event*)incidence)->dtEndStr(true); 1543 startString += " --- "+((Event*)incidence)->dtEndStr(true);
1532 1544
1533 } 1545 }
1534 1546
1535 } else { 1547 } else {
1536 if ( incidence->dtStart().time() != incidence->dtEnd().time() ) 1548 if ( incidence->dtStart().time() != incidence->dtEnd().time() )
1537 startString = ": "+KGlobal::locale()->formatTime(incidence->dtStart().time())+ 1549 startString = ": "+KGlobal::locale()->formatTime(incidence->dtStart().time())+
1538 "-"+KGlobal::locale()->formatTime(incidence->dtEnd().time()); 1550 "-"+KGlobal::locale()->formatTime(incidence->dtEnd().time());
1539 if ( incidence->categories().contains( i18n("Birthday") ) || incidence->categories().contains( i18n("Anniversary") ) ) { 1551 if ( incidence->categories().contains( i18n("Birthday") ) || incidence->categories().contains( i18n("Anniversary") ) ) {
1540 bool ok; 1552 bool ok;
1541 QDateTime noc = incidence->getNextOccurence( mView->startDate().addDays(-1), &ok ); 1553 QDateTime noc = incidence->getNextOccurence( mView->startDate().addDays(-1), &ok );
1542 if ( ok ) { 1554 if ( ok ) {
1543 int years = noc.date().year() - incidence->dtStart().date().year(); 1555 int years = noc.date().year() - incidence->dtStart().date().year();
1544 startString += i18n(" (%1 y.)"). arg( years ); 1556 startString += i18n(" (%1 y.)"). arg( years );
1545 } 1557 }
1546 } 1558 }
1547 else 1559 else
1548 startString +=" "+KGlobal::locale()->formatDate( incidence->dtStart().date(), true); 1560 startString +=" "+KGlobal::locale()->formatDate( incidence->dtStart().date(), true);
1549 } 1561 }
1550 1562
1551 } 1563 }
1552 else 1564 else
1553 startString = i18n(": (Prio ") +QString::number( (( KCal::Todo*)incidence)->priority() ) +") "+QString::number( (( KCal::Todo*)incidence)->percentComplete() ) +i18n("\% completed"); 1565 startString = i18n(": (Prio ") +QString::number( (( KCal::Todo*)incidence)->priority() ) +") "+QString::number( (( KCal::Todo*)incidence)->percentComplete() ) +i18n("\% completed");
1554 if ( !incidence->location().isEmpty() ) 1566 if ( !incidence->location().isEmpty() )
1555 startString += " (" +incidence->location()+")"; 1567 startString += " (" +incidence->location()+")";
1556 setCaption( incidence->summary()+startString); 1568 setCaption( incidence->summary()+startString);
1557 1569
1558 enableIncidenceActions( true ); 1570 enableIncidenceActions( true );
1559 1571
1560 if ( incidence->type() == "Event" ) { 1572 if ( incidence->type() == "Event" ) {
1561 mShowAction->setText( i18n("Show Event...") ); 1573 mShowAction->setText( i18n("Show Event...") );
1562 mEditAction->setText( i18n("Edit Event...") ); 1574 mEditAction->setText( i18n("Edit Event...") );
1563 mDeleteAction->setText( i18n("Delete Event...") ); 1575 mDeleteAction->setText( i18n("Delete Event...") );
1564 1576
1565 mNewSubTodoAction->setEnabled( false ); 1577 mNewSubTodoAction->setEnabled( false );
1566 } else if ( incidence->type() == "Todo" ) { 1578 } else if ( incidence->type() == "Todo" ) {
1567 mShowAction->setText( i18n("Show Todo...") ); 1579 mShowAction->setText( i18n("Show Todo...") );
1568 mEditAction->setText( i18n("Edit Todo...") ); 1580 mEditAction->setText( i18n("Edit Todo...") );
1569 mDeleteAction->setText( i18n("Delete Todo...") ); 1581 mDeleteAction->setText( i18n("Delete Todo...") );
1570 1582
1571 mNewSubTodoAction->setEnabled( true ); 1583 mNewSubTodoAction->setEnabled( true );
1572 } else { 1584 } else {
1573 mShowAction->setText( i18n("Show...") ); 1585 mShowAction->setText( i18n("Show...") );
1574 mShowAction->setText( i18n("Edit...") ); 1586 mShowAction->setText( i18n("Edit...") );
1575 mShowAction->setText( i18n("Delete...") ); 1587 mShowAction->setText( i18n("Delete...") );
1576 1588
1577 mNewSubTodoAction->setEnabled( false ); 1589 mNewSubTodoAction->setEnabled( false );
1578 } 1590 }
1579} 1591}
1580 1592
1581void MainWindow::enableIncidenceActions( bool enabled ) 1593void MainWindow::enableIncidenceActions( bool enabled )
1582{ 1594{
1583 mShowAction->setEnabled( enabled ); 1595 mShowAction->setEnabled( enabled );
1584 mEditAction->setEnabled( enabled ); 1596 mEditAction->setEnabled( enabled );
1585 mDeleteAction->setEnabled( enabled ); 1597 mDeleteAction->setEnabled( enabled );
1586 1598
1587 mCloneAction->setEnabled( enabled ); 1599 mCloneAction->setEnabled( enabled );
1588 mMoveAction->setEnabled( enabled ); 1600 mMoveAction->setEnabled( enabled );
1589 mBeamAction->setEnabled( enabled ); 1601 mBeamAction->setEnabled( enabled );
1590 mCancelAction->setEnabled( enabled ); 1602 mCancelAction->setEnabled( enabled );
1591} 1603}
1592 1604
1593void MainWindow::importOL() 1605void MainWindow::importOL()
1594{ 1606{
1595#ifdef _OL_IMPORT_ 1607#ifdef _OL_IMPORT_
1596 KOImportOLdialog *id = new KOImportOLdialog("Import from OL - select folder!" , mView->calendar(),this ); 1608 KOImportOLdialog *id = new KOImportOLdialog("Import from OL - select folder!" , mView->calendar(),this );
1597 id->exec(); 1609 id->exec();
1598 delete id; 1610 delete id;
1599 mView->updateView(); 1611 mView->updateView();
1600#endif 1612#endif
1601} 1613}
1602void MainWindow::importBday() 1614void MainWindow::importBday()
1603{ 1615{
1604 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 1616 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
1605 i18n("When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n"), 1617 i18n("When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n"),
1606 i18n("Import!"), i18n("Cancel"), 0, 1618 i18n("Import!"), i18n("Cancel"), 0,
1607 0, 1 ); 1619 0, 1 );
1608 if ( result == 0 ) { 1620 if ( result == 0 ) {
1609 mView->importBday(); 1621 mView->importBday();
1610 1622
1611 } 1623 }
1612 1624
1613 1625
1614} 1626}
1615void MainWindow::importQtopia() 1627void MainWindow::importQtopia()
1616{ 1628{
1617 //#ifndef DESKTOP_VERSION 1629 //#ifndef DESKTOP_VERSION
1618 QString mess = i18n("When importing a calendar twice\nduplicated events will be ignored!\nYou can create a backup file with\nFile - Save Calendar Backup\nto revert importing"); 1630 QString mess = i18n("When importing a calendar twice\nduplicated events will be ignored!\nYou can create a backup file with\nFile - Save Calendar Backup\nto revert importing");
1619#ifdef DESKTOP_VERSION 1631#ifdef DESKTOP_VERSION
1620 mess += i18n("The content of the following files will be\nimported (located in your home directory (hd)):\n(hd)/Applications/datebook/datebook.xml\n(hd)/Applications/todolist/todolist.xml\nThe following category file will be used:\n(hd)/Settings/Categories.xml"); 1632 mess += i18n("The content of the following files will be\nimported (located in your home directory (hd)):\n(hd)/Applications/datebook/datebook.xml\n(hd)/Applications/todolist/todolist.xml\nThe following category file will be used:\n(hd)/Settings/Categories.xml");
1621#endif 1633#endif
1622 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mess, 1634 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mess,
1623 i18n("Import!"), i18n("Cancel"), 0, 1635 i18n("Import!"), i18n("Cancel"), 0,
1624 0, 1 ); 1636 0, 1 );
1625 if ( result == 0 ) { 1637 if ( result == 0 ) {
1626#ifndef DESKTOP_VERSION 1638#ifndef DESKTOP_VERSION
1627 QString datebook = Global::applicationFileName( "datebook", "datebook.xml"); 1639 QString datebook = Global::applicationFileName( "datebook", "datebook.xml");
1628 QString todolist = Global::applicationFileName( "todolist", "todolist.xml"); 1640 QString todolist = Global::applicationFileName( "todolist", "todolist.xml");
1629 QString categories = QString( getenv( "HOME" ) ) + "/Settings/Categories.xml"; 1641 QString categories = QString( getenv( "HOME" ) ) + "/Settings/Categories.xml";
1630#else 1642#else
1631 QString datebook = QDir::homeDirPath()+ "/Applications/datebook/datebook.xml"; 1643 QString datebook = QDir::homeDirPath()+ "/Applications/datebook/datebook.xml";
1632 QString todolist = QDir::homeDirPath()+ "/Applications/todolist/todolist.xml"; 1644 QString todolist = QDir::homeDirPath()+ "/Applications/todolist/todolist.xml";
1633 QString categories = QDir::homeDirPath()+ "/Settings/Categories.xml"; 1645 QString categories = QDir::homeDirPath()+ "/Settings/Categories.xml";
1634#endif 1646#endif
1635 mView->importQtopia( categories, datebook, todolist ); 1647 mView->importQtopia( categories, datebook, todolist );
1636 } 1648 }
1637#if 0 1649#if 0
1638 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 1650 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
1639 i18n("Not supported \non desktop!\n"), 1651 i18n("Not supported \non desktop!\n"),
1640 i18n("Ok"), i18n("Cancel"), 0, 1652 i18n("Ok"), i18n("Cancel"), 0,
1641 0, 1 ); 1653 0, 1 );
1642 1654
1643#endif 1655#endif
1644} 1656}
1645 1657
1646void MainWindow::saveOnClose() 1658void MainWindow::saveOnClose()
1647{ 1659{
1648 KOPrefs *p = KOPrefs::instance(); 1660 KOPrefs *p = KOPrefs::instance();
1649 p->mToolBarHor = ( iconToolBar->orientation () == Qt:: Horizontal ); 1661 p->mToolBarHor = ( iconToolBar->orientation () == Qt:: Horizontal );
1650 if ( p->mToolBarHor ) 1662 if ( p->mToolBarHor )
1651 p->mToolBarUp = iconToolBar->y() > height()/2; 1663 p->mToolBarUp = iconToolBar->y() > height()/2;
1652 else 1664 else
1653 p->mToolBarUp = iconToolBar->x() > width()/2; 1665 p->mToolBarUp = iconToolBar->x() > width()/2;
1654 p->mToolBarHorV = ( viewToolBar->orientation () == Qt:: Horizontal ); 1666 p->mToolBarHorV = ( viewToolBar->orientation () == Qt:: Horizontal );
1655 if ( p->mToolBarHorV ) 1667 if ( p->mToolBarHorV )
1656 p->mToolBarUpV = viewToolBar->y() > height()/2; 1668 p->mToolBarUpV = viewToolBar->y() > height()/2;
1657 else 1669 else
1658 p->mToolBarUpV = viewToolBar->x() > width()/2 ; 1670 p->mToolBarUpV = viewToolBar->x() > width()/2 ;
1659 p->mToolBarHorN = ( navigatorToolBar->orientation () == Qt:: Horizontal ); 1671 p->mToolBarHorN = ( navigatorToolBar->orientation () == Qt:: Horizontal );
1660 if ( p->mToolBarHorN ) 1672 if ( p->mToolBarHorN )
1661 p->mToolBarUpN = navigatorToolBar->y() > height()/2; 1673 p->mToolBarUpN = navigatorToolBar->y() > height()/2;
1662 else 1674 else
1663 p->mToolBarUpN = navigatorToolBar->x() > width()/2 ; 1675 p->mToolBarUpN = navigatorToolBar->x() > width()/2 ;
1664 if ( filterToolBar ) { 1676 if ( filterToolBar ) {
1665 p->mToolBarHorF = ( filterToolBar->orientation () == Qt:: Horizontal ); 1677 p->mToolBarHorF = ( filterToolBar->orientation () == Qt:: Horizontal );
1666 if ( p->mToolBarHorF ) 1678 if ( p->mToolBarHorF )
1667 p->mToolBarUpF = filterToolBar->y() > height()/2; 1679 p->mToolBarUpF = filterToolBar->y() > height()/2;
1668 else 1680 else
1669 p->mToolBarUpF = filterToolBar->x() > width()/2 ; 1681 p->mToolBarUpF = filterToolBar->x() > width()/2 ;
1670 } 1682 }
1671 mView->writeSettings(); 1683 mView->writeSettings();
1672 if ( mCalendarModifiedFlag || mView->checkFileChanged( defaultFileName())) 1684 if ( mCalendarModifiedFlag || mView->checkFileChanged( defaultFileName()))
1673 save(); 1685 save();
1674} 1686}
1675void MainWindow::slotModifiedChanged( bool changed ) 1687void MainWindow::slotModifiedChanged( bool changed )
1676{ 1688{
1677 if ( mBlockAtStartup ) 1689 if ( mBlockAtStartup )
1678 return; 1690 return;
1679 1691
1680 int msec; 1692 int msec;
1681 // we store the changes after 1 minute, 1693 // we store the changes after 1 minute,
1682 // and for safety reasons after 10 minutes again 1694 // and for safety reasons after 10 minutes again
1683 if ( !mSyncManager->blockSave() ) 1695 if ( !mSyncManager->blockSave() )
1684 msec = (1000 * 60*KOPrefs::instance()->mAutoSaveInterval) +1000; 1696 msec = (1000 * 60*KOPrefs::instance()->mAutoSaveInterval) +1000;
1685 else 1697 else
1686 msec = 1000 * 600; 1698 msec = 1000 * 600;
1687 mSaveTimer.start( msec, true ); // 1 minute 1699 mSaveTimer.start( msec, true ); // 1 minute
1688 qDebug("KO: Saving File in %d secs!", msec/1000); 1700 qDebug("KO: Saving File in %d secs!", msec/1000);
1689 mCalendarModifiedFlag = true; 1701 mCalendarModifiedFlag = true;
1690} 1702}
1691void MainWindow::saveStopTimer() 1703void MainWindow::saveStopTimer()
1692{ 1704{
1693 mSaveTimer.stop(); 1705 mSaveTimer.stop();
1694 if (mSaveTimer.isActive() ) 1706 if (mSaveTimer.isActive() )
1695 qDebug("ti active "); 1707 qDebug("ti active ");
1696 else 1708 else
1697 qDebug("KO: Save timer stopped"); 1709 qDebug("KO: Save timer stopped");
1698} 1710}
1699void MainWindow::save() 1711void MainWindow::save()
1700{ 1712{
1701 if ( !mCalendarModifiedFlag ) { 1713 if ( !mCalendarModifiedFlag ) {
1702 qDebug("KO: Calendar not modified. Nothing saved."); 1714 qDebug("KO: Calendar not modified. Nothing saved.");
1703 return; 1715 return;
1704 } 1716 }
1705 if ( mSyncManager->blockSave() ) 1717 if ( mSyncManager->blockSave() )
1706 return; 1718 return;
1707 mSyncManager->setBlockSave(true); 1719 mSyncManager->setBlockSave(true);
1708 if ( mView->checkFileVersion( defaultFileName()) ) { 1720 if ( mView->checkFileVersion( defaultFileName()) ) {
1709 QTime neededSaveTime = QDateTime::currentDateTime().time(); 1721 QTime neededSaveTime = QDateTime::currentDateTime().time();
1710 setCaption(i18n("KO/Pi:Saving Data to File ..." )); 1722 setCaption(i18n("KO/Pi:Saving Data to File ..." ));
1711 qDebug("KO: Start saving data to file!"); 1723 qDebug("KO: Start saving data to file!");
1712 mView->saveCalendar( defaultFileName() ); 1724 mView->saveCalendar( defaultFileName() );
1713 mCalendarModifiedFlag = false; 1725 mCalendarModifiedFlag = false;
1714 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() ); 1726 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() );
1715 qDebug("KO: Needed %d ms for saving.",msNeeded ); 1727 qDebug("KO: Needed %d ms for saving.",msNeeded );
1716 QString savemes; 1728 QString savemes;
1717 savemes.sprintf(i18n("KO/Pi:File Saved. Needed %d sec, %d ms"),(msNeeded/1000)%100,msNeeded%1000 ); 1729 savemes.sprintf(i18n("KO/Pi:File Saved. Needed %d sec, %d ms"),(msNeeded/1000)%100,msNeeded%1000 );
1718 setCaption(savemes); 1730 setCaption(savemes);
1719 } else 1731 } else
1720 setCaption(i18n("Saving cancelled!")); 1732 setCaption(i18n("Saving cancelled!"));
1721 mSyncManager->setBlockSave( false ); 1733 mSyncManager->setBlockSave( false );
1722} 1734}
1723 1735
1724void MainWindow::keyReleaseEvent ( QKeyEvent * e) 1736void MainWindow::keyReleaseEvent ( QKeyEvent * e)
1725{ 1737{
1726 if ( !e->isAutoRepeat() ) { 1738 if ( !e->isAutoRepeat() ) {
1727 mFlagKeyPressed = false; 1739 mFlagKeyPressed = false;
1728 } 1740 }
1729} 1741}
1730void MainWindow::keyPressEvent ( QKeyEvent * e ) 1742void MainWindow::keyPressEvent ( QKeyEvent * e )
1731{ 1743{
1732 qApp->processEvents(); 1744 qApp->processEvents();
1733 if ( e->isAutoRepeat() && !mFlagKeyPressed ) { 1745 if ( e->isAutoRepeat() && !mFlagKeyPressed ) {
1734 e->ignore(); 1746 e->ignore();
1735 // qDebug(" ignore %d",e->isAutoRepeat() ); 1747 // qDebug(" ignore %d",e->isAutoRepeat() );
1736 return; 1748 return;
1737 } 1749 }
1738 if (! e->isAutoRepeat() ) 1750 if (! e->isAutoRepeat() )
1739 mFlagKeyPressed = true; 1751 mFlagKeyPressed = true;
1740 KOPrefs *p = KOPrefs::instance(); 1752 KOPrefs *p = KOPrefs::instance();
1741 bool showSelectedDates = false; 1753 bool showSelectedDates = false;
1742 int size; 1754 int size;
1743 int pro = 0; 1755 int pro = 0;
1744 //qDebug("MainWindow::keyPressEvent "); 1756 //qDebug("MainWindow::keyPressEvent ");
1745 switch ( e->key() ) { 1757 switch ( e->key() ) {
1746 case Qt::Key_Right: 1758 case Qt::Key_Right:
1747 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton) 1759 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton)
1748 mView->goNextMonth(); 1760 mView->goNextMonth();
1749 else 1761 else
1750 mView->goNext(); 1762 mView->goNext();
1751 showSelectedDates = true; 1763 showSelectedDates = true;
1752 break; 1764 break;
1753 case Qt::Key_Left: 1765 case Qt::Key_Left:
1754 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 1766 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
1755 mView->goPreviousMonth(); 1767 mView->goPreviousMonth();
1756 else 1768 else
1757 mView->goPrevious(); 1769 mView->goPrevious();
1758 showSelectedDates = true; 1770 showSelectedDates = true;
1759 break; 1771 break;
1760 case Qt::Key_Down: 1772 case Qt::Key_Down:
1761 mView->viewManager()->agendaView()->scrollOneHourDown(); 1773 mView->viewManager()->agendaView()->scrollOneHourDown();
1762 break; 1774 break;
1763 case Qt::Key_Up: 1775 case Qt::Key_Up:
1764 mView->viewManager()->agendaView()->scrollOneHourUp(); 1776 mView->viewManager()->agendaView()->scrollOneHourUp();
1765 break; 1777 break;
1766 case Qt::Key_K: 1778 case Qt::Key_K:
1767 mView->viewManager()->showMonthViewWeek(); 1779 mView->viewManager()->showMonthViewWeek();
1768 break; 1780 break;
1769 case Qt::Key_I: 1781 case Qt::Key_I:
1770 mView->showIncidence(); 1782 mView->showIncidence();
1771 break; 1783 break;
1772 case Qt::Key_Delete: 1784 case Qt::Key_Delete:
1773 case Qt::Key_Backspace: 1785 case Qt::Key_Backspace:
1774 mView->deleteIncidence(); 1786 mView->deleteIncidence();
1775 break; 1787 break;
1776 case Qt::Key_D: 1788 case Qt::Key_D:
1777 mView->viewManager()->showDayView(); 1789 mView->viewManager()->showDayView();
1778 showSelectedDates = true; 1790 showSelectedDates = true;
1779 break; 1791 break;
1780 case Qt::Key_O: 1792 case Qt::Key_O:
1781 mView->toggleFilerEnabled( ); 1793 mView->toggleFilerEnabled( );
1782 break; 1794 break;
1783 case Qt::Key_0: 1795 case Qt::Key_0:
1784 case Qt::Key_1: 1796 case Qt::Key_1:
1785 case Qt::Key_2: 1797 case Qt::Key_2:
1786 case Qt::Key_3: 1798 case Qt::Key_3:
1787 case Qt::Key_4: 1799 case Qt::Key_4:
1788 case Qt::Key_5: 1800 case Qt::Key_5:
1789 case Qt::Key_6: 1801 case Qt::Key_6:
1790 case Qt::Key_7: 1802 case Qt::Key_7:
1791 case Qt::Key_8: 1803 case Qt::Key_8:
1792 case Qt::Key_9: 1804 case Qt::Key_9:
1793 pro = e->key()-48; 1805 pro = e->key()-48;
1794 if ( pro == 0 ) 1806 if ( pro == 0 )
1795 pro = 10; 1807 pro = 10;
1796 if ( e->state() == Qt::ControlButton) 1808 if ( e->state() == Qt::ControlButton)
1797 pro += 10; 1809 pro += 10;
1798 break; 1810 break;
1799 case Qt::Key_M: 1811 case Qt::Key_M:
1800 mView->viewManager()->showMonthView(); 1812 mView->viewManager()->showMonthView();
1801 showSelectedDates = true; 1813 showSelectedDates = true;
1802 break; 1814 break;
1803 case Qt::Key_Insert: 1815 case Qt::Key_Insert:
1804 mView->newEvent(); 1816 mView->newEvent();
1805 break; 1817 break;
1806 case Qt::Key_S : 1818 case Qt::Key_S :
1807 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton) 1819 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton)
1808 mView->newSubTodo(); 1820 mView->newSubTodo();
1809 else 1821 else
1810 mView->dialogManager()->showSearchDialog(); 1822 mView->dialogManager()->showSearchDialog();
1811 break; 1823 break;
1812 case Qt::Key_Y : 1824 case Qt::Key_Y :
1813 case Qt::Key_Z : 1825 case Qt::Key_Z :
1814 mView->viewManager()->showWorkWeekView(); 1826 mView->viewManager()->showWorkWeekView();
1815 showSelectedDates = true; 1827 showSelectedDates = true;
1816 break; 1828 break;
1817 case Qt::Key_U : 1829 case Qt::Key_U :
1818 mView->viewManager()->showWeekView(); 1830 mView->viewManager()->showWeekView();
1819 showSelectedDates = true; 1831 showSelectedDates = true;
1820 break; 1832 break;
1821 case Qt::Key_H : 1833 case Qt::Key_H :
1822 keyBindings(); 1834 keyBindings();
1823 break; 1835 break;
1824 case Qt::Key_W: 1836 case Qt::Key_W:
1825 mView->viewManager()->showWhatsNextView(); 1837 mView->viewManager()->showWhatsNextView();
1826 break; 1838 break;
1827 case Qt::Key_L: 1839 case Qt::Key_L:
1828 mView->viewManager()->showListView(); 1840 mView->viewManager()->showListView();
1829 break; 1841 break;
1830 case Qt::Key_N: 1842 case Qt::Key_N:
1831 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton) 1843 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton)
1832 mView->viewManager()->showNextView(); 1844 mView->viewManager()->showNextView();
1833 else { 1845 else {
1834 mView->viewManager()->showNextXView(); 1846 mView->viewManager()->showNextXView();
1835 showSelectedDates = true; 1847 showSelectedDates = true;
1836 } 1848 }
1837 break; 1849 break;
1838 case Qt::Key_V: 1850 case Qt::Key_V:
1839 mView->viewManager()->showTodoView(); 1851 mView->viewManager()->showTodoView();
1840 break; 1852 break;
1841 case Qt::Key_C: 1853 case Qt::Key_C:
1842 mView->viewManager()->agendaView()->setStartHour( QTime::currentTime ().hour() ); 1854 mView->viewManager()->agendaView()->setStartHour( QTime::currentTime ().hour() );
1843 break; 1855 break;
1844 case Qt::Key_P: 1856 case Qt::Key_P:
1845 mView->showDatePicker( ); 1857 mView->showDatePicker( );
1846 break; 1858 break;
1847 case Qt::Key_F: 1859 case Qt::Key_F:
1848 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 1860 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
1849 mView->editFilters(); 1861 mView->editFilters();
1850 else 1862 else
1851 mView->toggleFilter(); 1863 mView->toggleFilter();
1852 break; 1864 break;
1853 case Qt::Key_X: 1865 case Qt::Key_X:
1854 mView->toggleDateNavigatorWidget(); 1866 mView->toggleDateNavigatorWidget();
1855 break; 1867 break;
1856 case Qt::Key_Space: 1868 case Qt::Key_Space:
1857 mView->toggleExpand(); 1869 mView->toggleExpand();
1858 break; 1870 break;
1859 case Qt::Key_A: 1871 case Qt::Key_A:
1860 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton ) 1872 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton )
1861 mView->showNextAlarms(); 1873 mView->showNextAlarms();
1862 else 1874 else
1863 mView->toggleAllDaySize(); 1875 mView->toggleAllDaySize();
1864 break; 1876 break;
1865 case Qt::Key_T: 1877 case Qt::Key_T:
1866 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 1878 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
1867 mView->newTodo(); 1879 mView->newTodo();
1868 else { 1880 else {
1869 mView->goToday(); 1881 mView->goToday();
1870 showSelectedDates = true; 1882 showSelectedDates = true;
1871 } 1883 }
1872 break; 1884 break;
1873 case Qt::Key_J: 1885 case Qt::Key_J:
1874 mView->viewManager()->showJournalView(); 1886 mView->viewManager()->showJournalView();
1875 break; 1887 break;
1876 case Qt::Key_B: 1888 case Qt::Key_B:
1877 mView->editIncidenceDescription();; 1889 mView->editIncidenceDescription();;
1878 break; 1890 break;
1879 // case Qt::Key_Return: 1891 // case Qt::Key_Return:
1880 case Qt::Key_E: 1892 case Qt::Key_E:
1881 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 1893 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
1882 mView->newEvent(); 1894 mView->newEvent();
1883 else 1895 else
1884 mView->editIncidence(); 1896 mView->editIncidence();
1885 break; 1897 break;
1886 case Qt::Key_Plus: 1898 case Qt::Key_Plus:
1887 size = p->mHourSize +2; 1899 size = p->mHourSize +2;
1888 if ( size <= 22 ) 1900 if ( size <= 22 )
1889 configureAgenda( size ); 1901 configureAgenda( size );
1890 break; 1902 break;
1891 case Qt::Key_Minus: 1903 case Qt::Key_Minus:
1892 size = p->mHourSize - 2; 1904 size = p->mHourSize - 2;
1893 if ( size >= 4 ) 1905 if ( size >= 4 )
1894 configureAgenda( size ); 1906 configureAgenda( size );
1895 break; 1907 break;
1896 1908
1897 1909
1898 default: 1910 default:
1899 e->ignore(); 1911 e->ignore();
1900 } 1912 }
1901 if ( pro > 0 ) { 1913 if ( pro > 0 ) {
1902 mView->selectFilter( pro-1 ); 1914 mView->selectFilter( pro-1 );
1903 } 1915 }
1904 if ( showSelectedDates ) { 1916 if ( showSelectedDates ) {
1905 ;// setCaptionToDates(); 1917 ;// setCaptionToDates();
1906 } 1918 }
1907 1919
1908} 1920}
1909 1921
1910void MainWindow::fillFilterMenu() 1922void MainWindow::fillFilterMenu()
1911{ 1923{
1912 selectFilterMenu->clear(); 1924 selectFilterMenu->clear();
1913 selectFilterMenu->insertItem(i18n ( "Edit Filters" ), 0 ); 1925 selectFilterMenu->insertItem(i18n ( "Edit Filters" ), 0 );
1914 selectFilterMenu->insertSeparator(); 1926 selectFilterMenu->insertSeparator();
1915 selectFilterMenu->insertItem(i18n ( "No Filter" ), 1 ); 1927 selectFilterMenu->insertItem(i18n ( "No Filter" ), 1 );
1916 1928
1917 selectFilterMenu->insertSeparator(); 1929 selectFilterMenu->insertSeparator();
1918 QPtrList<CalFilter> fili = mView->filters(); 1930 QPtrList<CalFilter> fili = mView->filters();
1919 CalFilter *curfilter = mView->filterView()->selectedFilter(); 1931 CalFilter *curfilter = mView->filterView()->selectedFilter();
1920 CalFilter *filter = fili.first(); 1932 CalFilter *filter = fili.first();
1921 int iii = 2; 1933 int iii = 2;
1922 bool checkitem = mView->filterView()->filtersEnabled(); 1934 bool checkitem = mView->filterView()->filtersEnabled();
1923 while(filter) { 1935 while(filter) {
1924 selectFilterMenu->insertItem( filter->name(), iii ); 1936 selectFilterMenu->insertItem( filter->name(), iii );
1925 if ( filter == curfilter) 1937 if ( filter == curfilter)
1926 selectFilterMenu->setItemChecked( iii, checkitem ); 1938 selectFilterMenu->setItemChecked( iii, checkitem );
1927 filter = fili.next(); 1939 filter = fili.next();
1928 ++iii; 1940 ++iii;
1929 } 1941 }
1930 if ( !checkitem ) 1942 if ( !checkitem )
1931 selectFilterMenu->setItemChecked( 1, true ); 1943 selectFilterMenu->setItemChecked( 1, true );
1932} 1944}
1933void MainWindow::fillFilterMenuPopup() 1945void MainWindow::fillFilterMenuPopup()
1934{ 1946{
1935 filterPopupMenu->clear(); 1947 filterPopupMenu->clear();
1936 filterPopupMenu->insertItem(i18n ( "No Filter" ), 0 ); 1948 filterPopupMenu->insertItem(i18n ( "No Filter" ), 0 );
1937 1949
1938 filterPopupMenu->insertSeparator(); 1950 filterPopupMenu->insertSeparator();
1939 QPtrList<CalFilter> fili = mView->filters(); 1951 QPtrList<CalFilter> fili = mView->filters();
1940 CalFilter *curfilter = mView->filterView()->selectedFilter(); 1952 CalFilter *curfilter = mView->filterView()->selectedFilter();
1941 CalFilter *filter = fili.first(); 1953 CalFilter *filter = fili.first();
1942 int iii = 1; 1954 int iii = 1;
1943 bool checkitem = mView->filterView()->filtersEnabled(); 1955 bool checkitem = mView->filterView()->filtersEnabled();
1944 while(filter) { 1956 while(filter) {
1945 filterPopupMenu->insertItem( filter->name(), iii ); 1957 filterPopupMenu->insertItem( filter->name(), iii );
1946 if ( filter == curfilter) 1958 if ( filter == curfilter)
1947 filterPopupMenu->setItemChecked( iii, checkitem ); 1959 filterPopupMenu->setItemChecked( iii, checkitem );
1948 filter = fili.next(); 1960 filter = fili.next();
1949 ++iii; 1961 ++iii;
1950 } 1962 }
1951 if ( !checkitem ) 1963 if ( !checkitem )
1952 filterPopupMenu->setItemChecked( 0, true ); 1964 filterPopupMenu->setItemChecked( 0, true );
1953} 1965}
1954void MainWindow::selectFilter( int fil ) 1966void MainWindow::selectFilter( int fil )
1955{ 1967{
1956 1968
1957 if ( fil == 0 ) { 1969 if ( fil == 0 ) {
1958 mView->editFilters( ); 1970 mView->editFilters( );
1959 } else if ( fil == 1 ){ 1971 } else if ( fil == 1 ){
1960 if ( mView->filterView()->filtersEnabled() ) 1972 if ( mView->filterView()->filtersEnabled() )
1961 mView->toggleFilerEnabled( ); 1973 mView->toggleFilerEnabled( );
1962 } else { 1974 } else {
1963 if ( !mView->filterView()->filtersEnabled() ) { 1975 if ( !mView->filterView()->filtersEnabled() ) {
1964 mView->filterView()->blockSignals( true ); 1976 mView->filterView()->blockSignals( true );
1965 mView->toggleFilerEnabled( ); 1977 mView->toggleFilerEnabled( );
1966 mView->filterView()->blockSignals( false ); 1978 mView->filterView()->blockSignals( false );
1967 } 1979 }
1968 mView->selectFilter( fil-2 ); 1980 mView->selectFilter( fil-2 );
1969 } 1981 }
1970} 1982}
1971void MainWindow::updateFilterToolbar() 1983void MainWindow::updateFilterToolbar()
1972{ 1984{
1973 if ( filterMenubar ) { 1985 if ( filterMenubar ) {
1974 if ( !mView->filterView()->filtersEnabled() ) { 1986 if ( !mView->filterView()->filtersEnabled() ) {
1975 filterMenubar->changeItem( 0, i18n("No Filter") ); 1987 filterMenubar->changeItem( 0, i18n("No Filter") );
1976 } else { 1988 } else {
1977 CalFilter *curfilter = mView->filterView()->selectedFilter(); 1989 CalFilter *curfilter = mView->filterView()->selectedFilter();
1978 if ( curfilter ) { 1990 if ( curfilter ) {
1979 filterMenubar->changeItem( 0, curfilter->name() ); 1991 filterMenubar->changeItem( 0, curfilter->name() );
1980 } 1992 }
1981 } 1993 }
1982 } 1994 }
1983} 1995}
1984void MainWindow::selectFilterPopup( int fil ) 1996void MainWindow::selectFilterPopup( int fil )
1985{ 1997{
1986 selectFilter( fil + 1 ); 1998 selectFilter( fil + 1 );
1987 1999
1988} 2000}
1989void MainWindow::configureToolBar( int item ) 2001void MainWindow::configureToolBar( int item )
1990{ 2002{
1991 2003
1992 configureToolBarMenu->setItemChecked( item, !configureToolBarMenu-> isItemChecked ( item ) ); 2004 configureToolBarMenu->setItemChecked( item, !configureToolBarMenu-> isItemChecked ( item ) );
1993 KOPrefs *p = KOPrefs::instance(); 2005 KOPrefs *p = KOPrefs::instance();
1994 p-> mShowIconStretch= configureToolBarMenu->isItemChecked( 5 ); 2006 p-> mShowIconStretch= configureToolBarMenu->isItemChecked( 5 );
1995 p-> mShowIconOnetoolbar = configureToolBarMenu->isItemChecked( 6 ); 2007 p-> mShowIconOnetoolbar = configureToolBarMenu->isItemChecked( 6 );
1996 p-> mShowIconFilter = configureToolBarMenu->isItemChecked( 7 ); 2008 p-> mShowIconFilter = configureToolBarMenu->isItemChecked( 7 );
1997 p-> mShowIconNewEvent= configureToolBarMenu->isItemChecked( 10 ); 2009 p-> mShowIconNewEvent= configureToolBarMenu->isItemChecked( 10 );
1998 p->mShowIconNewTodo = configureToolBarMenu->isItemChecked( 20 ); 2010 p->mShowIconNewTodo = configureToolBarMenu->isItemChecked( 20 );
1999 p-> mShowIconSearch= configureToolBarMenu->isItemChecked( 120 ); 2011 p-> mShowIconSearch= configureToolBarMenu->isItemChecked( 120 );
2000 p-> mShowIconList= configureToolBarMenu->isItemChecked( 30 ); 2012 p-> mShowIconList= configureToolBarMenu->isItemChecked( 30 );
2001 p-> mShowIconDay1= configureToolBarMenu->isItemChecked( 40 ); 2013 p-> mShowIconDay1= configureToolBarMenu->isItemChecked( 40 );
2002 p-> mShowIconDay5= configureToolBarMenu->isItemChecked( 50 ); 2014 p-> mShowIconDay5= configureToolBarMenu->isItemChecked( 50 );
2003 p-> mShowIconDay6= configureToolBarMenu->isItemChecked( 75 ); 2015 p-> mShowIconDay6= configureToolBarMenu->isItemChecked( 75 );
2004 p-> mShowIconDay7= configureToolBarMenu->isItemChecked( 60 ); 2016 p-> mShowIconDay7= configureToolBarMenu->isItemChecked( 60 );
2005 p-> mShowIconMonth= configureToolBarMenu->isItemChecked( 70 ); 2017 p-> mShowIconMonth= configureToolBarMenu->isItemChecked( 70 );
2006 p-> mShowIconTodoview= configureToolBarMenu->isItemChecked( 80 ); 2018 p-> mShowIconTodoview= configureToolBarMenu->isItemChecked( 80 );
2007 p-> mShowIconBackFast= configureToolBarMenu->isItemChecked( 200 ); 2019 p-> mShowIconBackFast= configureToolBarMenu->isItemChecked( 200 );
2008 p-> mShowIconBack = configureToolBarMenu->isItemChecked( 210 ); 2020 p-> mShowIconBack = configureToolBarMenu->isItemChecked( 210 );
2009 p-> mShowIconToday= configureToolBarMenu->isItemChecked( 130 ); 2021 p-> mShowIconToday= configureToolBarMenu->isItemChecked( 130 );
2010 p-> mShowIconForward= configureToolBarMenu->isItemChecked( 220 ); 2022 p-> mShowIconForward= configureToolBarMenu->isItemChecked( 220 );
2011 p-> mShowIconForwardFast= configureToolBarMenu->isItemChecked( 230 ); 2023 p-> mShowIconForwardFast= configureToolBarMenu->isItemChecked( 230 );
2012 p-> mShowIconNextDays= configureToolBarMenu->isItemChecked( 100 ); 2024 p-> mShowIconNextDays= configureToolBarMenu->isItemChecked( 100 );
2013 p-> mShowIconNext= configureToolBarMenu->isItemChecked( 110 ); 2025 p-> mShowIconNext= configureToolBarMenu->isItemChecked( 110 );
2014 p-> mShowIconJournal= configureToolBarMenu->isItemChecked( 90 ); 2026 p-> mShowIconJournal= configureToolBarMenu->isItemChecked( 90 );
2015 p-> mShowIconWhatsThis= configureToolBarMenu->isItemChecked( 300 ); 2027 p-> mShowIconWhatsThis= configureToolBarMenu->isItemChecked( 300 );
2016 p-> mShowIconWeekNum= configureToolBarMenu->isItemChecked( 400 ); 2028 p-> mShowIconWeekNum= configureToolBarMenu->isItemChecked( 400 );
2017 // initActions(); 2029 // initActions();
2018} 2030}
2019void MainWindow::setCaption ( const QString & c ) 2031void MainWindow::setCaption ( const QString & c )
diff --git a/korganizer/navigatorbar.cpp b/korganizer/navigatorbar.cpp
index 49149f2..0610d55 100644
--- a/korganizer/navigatorbar.cpp
+++ b/korganizer/navigatorbar.cpp
@@ -1,278 +1,279 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 3
4 Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org> 4 Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org>
5 5
6 This program is free software; you can redistribute it and/or modify 6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by 7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or 8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version. 9 (at your option) any later version.
10 10
11 This program is distributed in the hope that it will be useful, 11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details. 14 GNU General Public License for more details.
15 15
16 You should have received a copy of the GNU General Public License 16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software 17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 19
20 As a special exception, permission is given to link this program 20 As a special exception, permission is given to link this program
21 with any edition of Qt, and distribute the resulting executable, 21 with any edition of Qt, and distribute the resulting executable,
22 without including the source code for Qt in the source distribution. 22 without including the source code for Qt in the source distribution.
23*/ 23*/
24 24
25#include <qstring.h> 25#include <qstring.h>
26#include <qtooltip.h> 26#include <qtooltip.h>
27#include <qpushbutton.h> 27#include <qpushbutton.h>
28#include <qlayout.h> 28#include <qlayout.h>
29#include <qframe.h> 29#include <qframe.h>
30#include <qlabel.h> 30#include <qlabel.h>
31#include <qpopupmenu.h> 31#include <qpopupmenu.h>
32#include <qapplication.h> 32#include <qapplication.h>
33 33
34#include <kdebug.h> 34#include <kdebug.h>
35#include <klocale.h> 35#include <klocale.h>
36#include <kglobal.h> 36#include <kglobal.h>
37#include <kiconloader.h> 37#include <kiconloader.h>
38#include "libkdepim/kdatepicker.h" 38#include "libkdepim/kdatepicker.h"
39#include <knotifyclient.h> 39#include <knotifyclient.h>
40#include "kdatetbl.h" 40#include "kdatetbl.h"
41 41
42#include "koglobals.h" 42#include "koglobals.h"
43#include <kglobalsettings.h> 43#include <kglobalsettings.h>
44#include "koprefs.h" 44#include "koprefs.h"
45#ifndef KORG_NOPLUGINS 45#ifndef KORG_NOPLUGINS
46#include "kocore.h" 46#include "kocore.h"
47#endif 47#endif
48 48
49#include <kcalendarsystem.h> 49#include <kcalendarsystem.h>
50 50
51#include "navigatorbar.h" 51#include "navigatorbar.h"
52 52
53NavigatorBar::NavigatorBar( const QDate & date, QWidget *parent, const char *name ) 53NavigatorBar::NavigatorBar( const QDate & date, QWidget *parent, const char *name )
54 : QWidget( parent, name ) 54 : QWidget( parent, name )
55{ 55{
56 QBoxLayout *topLayout = new QHBoxLayout( this ); 56 QBoxLayout *topLayout = new QHBoxLayout( this );
57 57
58 // Set up the control buttons and date label 58 // Set up the control buttons and date label
59 mCtrlFrame = new QFrame( this ); 59 mCtrlFrame = new QFrame( this );
60 mCtrlFrame->setFrameStyle(QFrame::Panel|QFrame::Raised); 60 mCtrlFrame->setFrameStyle(QFrame::Panel|QFrame::Raised);
61 mCtrlFrame->setLineWidth(1); 61 mCtrlFrame->setLineWidth(1);
62 62
63 topLayout->addWidget( mCtrlFrame ); 63 topLayout->addWidget( mCtrlFrame );
64 64
65 65
66 66
67 bool isRTL = KOGlobals::self()->reverseLayout(); 67 bool isRTL = KOGlobals::self()->reverseLayout();
68#ifndef DESKTOP_VERSION 68#ifndef DESKTOP_VERSION
69 bool isDesktop = false; 69 bool isDesktop = false;
70#else 70#else
71 bool isDesktop = true; 71 bool isDesktop = true;
72#endif 72#endif
73 if ( QString ( name ) == QString("useBigPixmaps") && QApplication::desktop()->width() > 320 ) 73 if ( QString ( name ) == QString("useBigPixmaps") && QApplication::desktop()->width() > 320 )
74 isDesktop = true; 74 isDesktop = true;
75 // Create backward navigation buttons 75 // Create backward navigation buttons
76 mPrevYear = new QPushButton( mCtrlFrame ); 76 mPrevYear = new QPushButton( mCtrlFrame );
77 mPrevYear->setPixmap( SmallIcon( isDesktop ? "3leftarrowB" : "3leftarrow" ) ); 77 mPrevYear->setPixmap( SmallIcon( isDesktop ? "3leftarrowB" : "3leftarrow" ) );
78 QToolTip::add( mPrevYear, i18n("Previous Year") ); 78 QToolTip::add( mPrevYear, i18n("Previous Year") );
79 79
80 mPrevMonth = new QPushButton( mCtrlFrame ); 80 mPrevMonth = new QPushButton( mCtrlFrame );
81 mPrevMonth->setPixmap( SmallIcon( isDesktop ? "2leftarrowB" : "2leftarrow") ); 81 mPrevMonth->setPixmap( SmallIcon( isDesktop ? "2leftarrowB" : "2leftarrow") );
82 QToolTip::add( mPrevMonth, i18n("Previous Month") ); 82 QToolTip::add( mPrevMonth, i18n("Previous Month") );
83 83
84 // Create forward navigation buttons 84 // Create forward navigation buttons
85 mNextMonth = new QPushButton( mCtrlFrame ); 85 mNextMonth = new QPushButton( mCtrlFrame );
86 mNextMonth->setPixmap( SmallIcon( isDesktop ? "2rightarrowB" : "2rightarrow") ); 86 mNextMonth->setPixmap( SmallIcon( isDesktop ? "2rightarrowB" : "2rightarrow") );
87 QToolTip::add( mNextMonth, i18n("Next Month") ); 87 QToolTip::add( mNextMonth, i18n("Next Month") );
88 88
89 mPrevWeek = new QPushButton( mCtrlFrame ); 89 mPrevWeek = new QPushButton( mCtrlFrame );
90 mPrevWeek->setPixmap( SmallIcon( isDesktop ? "1leftarrowB" : "1leftarrow") ); 90 mPrevWeek->setPixmap( SmallIcon( isDesktop ? "1leftarrowB" : "1leftarrow") );
91 QToolTip::add( mPrevWeek, i18n("Previous Week") ); 91 QToolTip::add( mPrevWeek, i18n("Previous Week") );
92 92
93 // Create forward navigation buttons 93 // Create forward navigation buttons
94 mNextWeek = new QPushButton( mCtrlFrame ); 94 mNextWeek = new QPushButton( mCtrlFrame );
95 mNextWeek->setPixmap( SmallIcon( isDesktop ? "1rightarrowB" : "1rightarrow") ); 95 mNextWeek->setPixmap( SmallIcon( isDesktop ? "1rightarrowB" : "1rightarrow") );
96 QToolTip::add( mNextWeek, i18n("Next Week") ); 96 QToolTip::add( mNextWeek, i18n("Next Week") );
97 97
98 mNextYear = new QPushButton( mCtrlFrame ); 98 mNextYear = new QPushButton( mCtrlFrame );
99 mNextYear->setPixmap( SmallIcon( isDesktop ? "3rightarrowB": "3rightarrow") ); 99 mNextYear->setPixmap( SmallIcon( isDesktop ? "3rightarrowB": "3rightarrow") );
100 QToolTip::add( mNextYear, i18n("Next Year") ); 100 QToolTip::add( mNextYear, i18n("Next Year") );
101 mSelectMonth = new QPushButton( mCtrlFrame ); 101 mSelectMonth = new QPushButton( mCtrlFrame );
102 // Create month name label 102 // Create month name label
103 //selectMonth->setFont( tfont ); 103 //selectMonth->setFont( tfont );
104 // selectMonth->setAlignment( AlignCenter ); 104 // selectMonth->setAlignment( AlignCenter );
105 //mDateLabel = new QLabel( selectMonth ); 105 //mDateLabel = new QLabel( selectMonth );
106 //mDateLabel->setFont( tfont ); 106 //mDateLabel->setFont( tfont );
107 //mDateLabel->setAlignment( AlignCenter ); 107 //mDateLabel->setAlignment( AlignCenter );
108 if ( QString ( name ) == QString("useBigPixmaps") ) { 108 if ( QString ( name ) == QString("useBigPixmaps") ) {
109 mNextMonth->setFlat( true); 109 mNextMonth->setFlat( true);
110 mNextWeek->setFlat( true); 110 mNextWeek->setFlat( true);
111 mNextYear->setFlat( true); 111 mNextYear->setFlat( true);
112 mSelectMonth->setFlat( true); 112 mSelectMonth->setFlat( true);
113 mPrevYear->setFlat( true); 113 mPrevYear->setFlat( true);
114 mPrevMonth->setFlat( true); 114 mPrevMonth->setFlat( true);
115 mPrevWeek->setFlat( true); 115 mPrevWeek->setFlat( true);
116
117 mPrevYear->setAutoRepeat( true );
118 mPrevMonth->setAutoRepeat( true );
119 mNextMonth->setAutoRepeat( true );
120 mPrevWeek->setAutoRepeat( true );
121 mNextWeek->setAutoRepeat( true );
122 mNextYear->setAutoRepeat( true );
116 } else { 123 } else {
117 mPrevWeek->hide(); 124 mPrevWeek->hide();
118 mNextWeek->hide(); 125 mNextWeek->hide();
119 } 126 }
120 127
121 resetFont( font() ); 128 resetFont( font() );
122 129
123 130
124 // set up control frame layout 131 // set up control frame layout
125 QBoxLayout *ctrlLayout = new QHBoxLayout( mCtrlFrame, 1 ); 132 QBoxLayout *ctrlLayout = new QHBoxLayout( mCtrlFrame, 1 );
126 ctrlLayout->addWidget( mPrevYear, 3 ); 133 ctrlLayout->addWidget( mPrevYear, 3 );
127 ctrlLayout->addWidget( mPrevMonth, 3 ); 134 ctrlLayout->addWidget( mPrevMonth, 3 );
128 ctrlLayout->addWidget( mPrevWeek, 3 ); 135 ctrlLayout->addWidget( mPrevWeek, 3 );
129 //ctrlLayout->addStretch( 1 ); 136 //ctrlLayout->addStretch( 1 );
130 // ctrlLayout->addSpacing( 1 ); 137 // ctrlLayout->addSpacing( 1 );
131 // ctrlLayout->addWidget( mDateLabel ); 138 // ctrlLayout->addWidget( mDateLabel );
132 ctrlLayout->addWidget( mSelectMonth ); 139 ctrlLayout->addWidget( mSelectMonth );
133 // ctrlLayout->addSpacing( 1 ); 140 // ctrlLayout->addSpacing( 1 );
134 // ctrlLayout->addStretch( 1 ); 141 // ctrlLayout->addStretch( 1 );
135 ctrlLayout->addWidget( mNextWeek, 3 ); 142 ctrlLayout->addWidget( mNextWeek, 3 );
136 ctrlLayout->addWidget( mNextMonth, 3 ); 143 ctrlLayout->addWidget( mNextMonth, 3 );
137 ctrlLayout->addWidget( mNextYear, 3 ); 144 ctrlLayout->addWidget( mNextYear, 3 );
138 145
139 connect( mPrevYear, SIGNAL( clicked() ), SIGNAL( goPrevYear() ) ); 146 connect( mPrevYear, SIGNAL( clicked() ), SIGNAL( goPrevYear() ) );
140 connect( mPrevMonth, SIGNAL( clicked() ), SIGNAL( goPrevMonth() ) ); 147 connect( mPrevMonth, SIGNAL( clicked() ), SIGNAL( goPrevMonth() ) );
141 connect( mNextMonth, SIGNAL( clicked() ), SIGNAL( goNextMonth() ) ); 148 connect( mNextMonth, SIGNAL( clicked() ), SIGNAL( goNextMonth() ) );
142 connect( mPrevWeek, SIGNAL( clicked() ), SIGNAL( goPrevWeek() ) ); 149 connect( mPrevWeek, SIGNAL( clicked() ), SIGNAL( goPrevWeek() ) );
143 connect( mNextWeek, SIGNAL( clicked() ), SIGNAL( goNextWeek() ) ); 150 connect( mNextWeek, SIGNAL( clicked() ), SIGNAL( goNextWeek() ) );
144 connect( mNextYear, SIGNAL( clicked() ), SIGNAL( goNextYear() ) ); 151 connect( mNextYear, SIGNAL( clicked() ), SIGNAL( goNextYear() ) );
145 connect( mSelectMonth, SIGNAL( clicked() ),SLOT( selectMonth() ) ); 152 connect( mSelectMonth, SIGNAL( clicked() ),SLOT( selectMonth() ) );
146 mPrevYear->setFocusPolicy(NoFocus); 153 mPrevYear->setFocusPolicy(NoFocus);
147 mPrevMonth->setFocusPolicy(NoFocus); 154 mPrevMonth->setFocusPolicy(NoFocus);
148 mNextMonth->setFocusPolicy(NoFocus); 155 mNextMonth->setFocusPolicy(NoFocus);
149 mPrevWeek->setFocusPolicy(NoFocus); 156 mPrevWeek->setFocusPolicy(NoFocus);
150 mNextWeek->setFocusPolicy(NoFocus); 157 mNextWeek->setFocusPolicy(NoFocus);
151 mNextYear->setFocusPolicy(NoFocus); 158 mNextYear->setFocusPolicy(NoFocus);
152 mSelectMonth->setFocusPolicy(NoFocus); 159 mSelectMonth->setFocusPolicy(NoFocus);
153 setSizePolicy( QSizePolicy ( QSizePolicy::Expanding ,QSizePolicy::Fixed ) ); 160 setSizePolicy( QSizePolicy ( QSizePolicy::Expanding ,QSizePolicy::Fixed ) );
154 mPrevYear->setAutoRepeat( true ); 161
155 mPrevMonth->setAutoRepeat( true );
156 mNextMonth->setAutoRepeat( true );
157 mPrevWeek->setAutoRepeat( true );
158 mNextWeek->setAutoRepeat( true );
159 mNextYear->setAutoRepeat( true );
160
161} 162}
162 163
163NavigatorBar::~NavigatorBar() 164NavigatorBar::~NavigatorBar()
164{ 165{
165} 166}
166QSize NavigatorBar::sizeHint() const 167QSize NavigatorBar::sizeHint() const
167{ 168{
168 int wid = mCurrentMinWid ; 169 int wid = mCurrentMinWid ;
169 if ( mPrevYear->isVisible() ) 170 if ( mPrevYear->isVisible() )
170 wid += mCurrentButtonMinWid; 171 wid += mCurrentButtonMinWid;
171 if ( mPrevMonth->isVisible() ) 172 if ( mPrevMonth->isVisible() )
172 wid += mCurrentButtonMinWid; 173 wid += mCurrentButtonMinWid;
173 if ( mPrevWeek->isVisible() ) 174 if ( mPrevWeek->isVisible() )
174 wid += mCurrentButtonMinWid; 175 wid += mCurrentButtonMinWid;
175 if ( mNextMonth->isVisible() ) 176 if ( mNextMonth->isVisible() )
176 wid += mCurrentButtonMinWid; 177 wid += mCurrentButtonMinWid;
177 if ( mNextWeek->isVisible() ) 178 if ( mNextWeek->isVisible() )
178 wid += mCurrentButtonMinWid; 179 wid += mCurrentButtonMinWid;
179 if ( mNextYear->isVisible() ) 180 if ( mNextYear->isVisible() )
180 wid += mCurrentButtonMinWid; 181 wid += mCurrentButtonMinWid;
181 //qDebug("ret %d %d ", wid, mCurrentHei); 182 //qDebug("ret %d %d ", wid, mCurrentHei);
182 return QSize ( wid, mCurrentHei ); 183 return QSize ( wid, mCurrentHei );
183} 184}
184QSize NavigatorBar::sizeHintTwoButtons( int butNum ) const 185QSize NavigatorBar::sizeHintTwoButtons( int butNum ) const
185{ 186{
186 return QSize ( mCurrentMinWid + butNum * mCurrentButtonMinWid , mCurrentHei ); 187 return QSize ( mCurrentMinWid + butNum * mCurrentButtonMinWid , mCurrentHei );
187} 188}
188void NavigatorBar::resetFont ( QFont fo ) 189void NavigatorBar::resetFont ( QFont fo )
189{ 190{
190 191
191 QFont tfont = fo; 192 QFont tfont = fo;
192 if ( QApplication::desktop()->width() >= 480 ) 193 if ( QApplication::desktop()->width() >= 480 )
193 tfont.setPointSize(tfont.pointSize()+2); 194 tfont.setPointSize(tfont.pointSize()+2);
194 tfont.setBold(true); 195 tfont.setBold(true);
195 196
196 mSelectMonth->setFont( tfont ); 197 mSelectMonth->setFont( tfont );
197 // Set minimum width to width of widest month name label 198 // Set minimum width to width of widest month name label
198 int i; 199 int i;
199 int maxwidth = 0; 200 int maxwidth = 0;
200 QFontMetrics fm ( mSelectMonth->font() ); 201 QFontMetrics fm ( mSelectMonth->font() );
201 int width = fm.width("September '00" ); 202 int width = fm.width("September '00" );
202 maxwidth = width+2; 203 maxwidth = width+2;
203 int size = fm.height()+2; 204 int size = fm.height()+2;
204 if ( QApplication::desktop()->width() >= 480 ) { 205 if ( QApplication::desktop()->width() >= 480 ) {
205 size += 6; 206 size += 6;
206 maxwidth+= 6; 207 maxwidth+= 6;
207 } 208 }
208 mSelectMonth->setMinimumWidth( maxwidth ); 209 mSelectMonth->setMinimumWidth( maxwidth );
209 mSelectMonth->setFixedHeight( size ); 210 mSelectMonth->setFixedHeight( size );
210 mPrevYear->setFixedHeight( size ); 211 mPrevYear->setFixedHeight( size );
211 mPrevMonth->setFixedHeight( size ); 212 mPrevMonth->setFixedHeight( size );
212 mPrevWeek->setFixedHeight( size ); 213 mPrevWeek->setFixedHeight( size );
213 mNextMonth->setFixedHeight( size ); 214 mNextMonth->setFixedHeight( size );
214 mNextWeek->setFixedHeight( size ); 215 mNextWeek->setFixedHeight( size );
215 mNextYear->setFixedHeight ( size ); 216 mNextYear->setFixedHeight ( size );
216 mCurrentHei = size +2; 217 mCurrentHei = size +2;
217 mCurrentMinWid = maxwidth+2; 218 mCurrentMinWid = maxwidth+2;
218 mCurrentButtonMinWid = mPrevYear->sizeHint().width()+2; 219 mCurrentButtonMinWid = mPrevYear->sizeHint().width()+2;
219} 220}
220 221
221void NavigatorBar::showButtons( bool left, bool right ) 222void NavigatorBar::showButtons( bool left, bool right )
222{ 223{
223 if ( left ) { 224 if ( left ) {
224 mPrevYear->show(); 225 mPrevYear->show();
225 mPrevMonth->show(); 226 mPrevMonth->show();
226 } else { 227 } else {
227 mPrevYear->hide(); 228 mPrevYear->hide();
228 mPrevMonth->hide(); 229 mPrevMonth->hide();
229 } 230 }
230 231
231 if ( right ) { 232 if ( right ) {
232 mNextYear->show(); 233 mNextYear->show();
233 mNextMonth->show(); 234 mNextMonth->show();
234 } else { 235 } else {
235 mNextYear->hide(); 236 mNextYear->hide();
236 mNextMonth->hide(); 237 mNextMonth->hide();
237 } 238 }
238 if ( !left && !right ) { 239 if ( !left && !right ) {
239 //mSelectMonth->setMaximumWidth( 1024 ); 240 //mSelectMonth->setMaximumWidth( 1024 );
240 mSelectMonth->setSizePolicy( QSizePolicy ( QSizePolicy::Expanding ,QSizePolicy::Fixed ) ); 241 mSelectMonth->setSizePolicy( QSizePolicy ( QSizePolicy::Expanding ,QSizePolicy::Fixed ) );
241 } 242 }
242} 243}
243 244
244void NavigatorBar::selectMonth() 245void NavigatorBar::selectMonth()
245{ 246{
246 247
247 int month; 248 int month;
248 KPopupFrame* popup = new KPopupFrame(this); 249 KPopupFrame* popup = new KPopupFrame(this);
249 KDateInternalMonthPicker* picker = new KDateInternalMonthPicker(popup); 250 KDateInternalMonthPicker* picker = new KDateInternalMonthPicker(popup);
250 // ----- 251 // -----
251 picker->resize(picker->sizeHint()); 252 picker->resize(picker->sizeHint());
252 popup->setMainWidget(picker); 253 popup->setMainWidget(picker);
253 picker->setFocus(); 254 picker->setFocus();
254 connect(picker, SIGNAL(closeMe(int)), popup, SLOT(close(int))); 255 connect(picker, SIGNAL(closeMe(int)), popup, SLOT(close(int)));
255 if(popup->exec(mSelectMonth->mapToGlobal(QPoint(0, mSelectMonth->height())))) 256 if(popup->exec(mSelectMonth->mapToGlobal(QPoint(0, mSelectMonth->height()))))
256 { 257 {
257 month = picker->getResult(); 258 month = picker->getResult();
258 emit monthSelected ( month ); 259 emit monthSelected ( month );
259 } else { 260 } else {
260 KNotifyClient::beep(); 261 KNotifyClient::beep();
261 } 262 }
262 delete popup; 263 delete popup;
263} 264}
264void NavigatorBar::selectDates( const KCal::DateList &dateList ) 265void NavigatorBar::selectDates( const KCal::DateList &dateList )
265{ 266{
266 if (dateList.count() > 0) { 267 if (dateList.count() > 0) {
267 QDate date = dateList.first(); 268 QDate date = dateList.first();
268 269
269 const KCalendarSystem *calSys = KOGlobals::self()->calendarSystem(); 270 const KCalendarSystem *calSys = KOGlobals::self()->calendarSystem();
270 271
271 // compute the label at the top of the navigator 272 // compute the label at the top of the navigator
272 QString dtstr = i18n(calSys->monthName( date )) + " '" + 273 QString dtstr = i18n(calSys->monthName( date )) + " '" +
273 QString::number( calSys->year( date ) ).right(2); 274 QString::number( calSys->year( date ) ).right(2);
274 275
275 mSelectMonth->setText( dtstr ); 276 mSelectMonth->setText( dtstr );
276 } 277 }
277} 278}
278 279