summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-10-22 14:49:34 (UTC)
committer zautrix <zautrix>2005-10-22 14:49:34 (UTC)
commit30550b912b291ccedc8ab100004ba8c5ed216097 (patch) (unidiff)
tree9b815bc396ce304b1e975226306da5a498e70259
parent2e5c0a288f7c54cce7e0327ddbbd160f242758f1 (diff)
downloadkdepimpi-30550b912b291ccedc8ab100004ba8c5ed216097.zip
kdepimpi-30550b912b291ccedc8ab100004ba8c5ed216097.tar.gz
kdepimpi-30550b912b291ccedc8ab100004ba8c5ed216097.tar.bz2
fix
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 2ba8528..e31a6e1 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -2479,2682 +2479,2682 @@ bool CalendarView::checkAllFileVersions()
2479 cal = calendars.next(); 2479 cal = calendars.next();
2480 QDateTime storeTemp = loadedFileVersion; 2480 QDateTime storeTemp = loadedFileVersion;
2481 while ( cal ) { 2481 while ( cal ) {
2482 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { 2482 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) {
2483 mCalendar->setDefaultCalendar( cal->mCalNumber ); 2483 mCalendar->setDefaultCalendar( cal->mCalNumber );
2484 mCalendar->setDefaultCalendarEnabledOnly(); 2484 mCalendar->setDefaultCalendarEnabledOnly();
2485 loadedFileVersion = cal->mLoadDt.addSecs( 15 ); 2485 loadedFileVersion = cal->mLoadDt.addSecs( 15 );
2486 if ( !checkFileVersion(cal->mFileName )) { 2486 if ( !checkFileVersion(cal->mFileName )) {
2487 loadedFileVersion = storeTemp; 2487 loadedFileVersion = storeTemp;
2488 restoreCalendarSettings(); 2488 restoreCalendarSettings();
2489 return false; 2489 return false;
2490 } 2490 }
2491 } 2491 }
2492 cal = calendars.next(); 2492 cal = calendars.next();
2493 } 2493 }
2494 loadedFileVersion = storeTemp; 2494 loadedFileVersion = storeTemp;
2495 return true; 2495 return true;
2496} 2496}
2497bool CalendarView::checkFileVersion(QString fn) 2497bool CalendarView::checkFileVersion(QString fn)
2498{ 2498{
2499 QFileInfo finf ( fn ); 2499 QFileInfo finf ( fn );
2500 if ( !finf.exists() ) 2500 if ( !finf.exists() )
2501 return true; 2501 return true;
2502 QDateTime dt = finf.lastModified (); 2502 QDateTime dt = finf.lastModified ();
2503 //qDebug("loaded file version %s %s", fn.latin1(), loadedFileVersion.toString().latin1()); 2503 //qDebug("loaded file version %s %s", fn.latin1(), loadedFileVersion.toString().latin1());
2504 //qDebug("file on disk version %s %s", fn.latin1(),dt.toString().latin1()); 2504 //qDebug("file on disk version %s %s", fn.latin1(),dt.toString().latin1());
2505 if ( dt <= loadedFileVersion ) 2505 if ( dt <= loadedFileVersion )
2506 return true; 2506 return true;
2507 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file\n%1\non disk has changed!\nFile size: %2 bytes.\nLast modified: %3\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg(KGlobal::formatMessage(fn,0)).arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) , 2507 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file\n%1\non disk has changed!\nFile size: %2 bytes.\nLast modified: %3\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg(KGlobal::formatMessage(fn,0)).arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) ,
2508 i18n("KO/Pi Warning"),i18n("Overwrite"), 2508 i18n("KO/Pi Warning"),i18n("Overwrite"),
2509 i18n("Sync+save")); 2509 i18n("Sync+save"));
2510 2510
2511 if ( km == KMessageBox::Cancel ) 2511 if ( km == KMessageBox::Cancel )
2512 return false; 2512 return false;
2513 if ( km == KMessageBox::Yes ) 2513 if ( km == KMessageBox::Yes )
2514 return true; 2514 return true;
2515 2515
2516 setSyncDevice("deleteaftersync" ); 2516 setSyncDevice("deleteaftersync" );
2517 mSyncManager->mAskForPreferences = true; 2517 mSyncManager->mAskForPreferences = true;
2518 mSyncManager->mSyncAlgoPrefs = 3; 2518 mSyncManager->mSyncAlgoPrefs = 3;
2519 mSyncManager->mWriteBackFile = false; 2519 mSyncManager->mWriteBackFile = false;
2520 mSyncManager->mWriteBackExistingOnly = false; 2520 mSyncManager->mWriteBackExistingOnly = false;
2521 mSyncManager->mShowSyncSummary = false; 2521 mSyncManager->mShowSyncSummary = false;
2522 syncCalendar( fn, 3 ); 2522 syncCalendar( fn, 3 );
2523 Event * e = getLastSyncEvent(); 2523 Event * e = getLastSyncEvent();
2524 if ( e ) 2524 if ( e )
2525 mCalendar->deleteEvent( e ); 2525 mCalendar->deleteEvent( e );
2526 return true; 2526 return true;
2527} 2527}
2528bool CalendarView::saveCalendars() 2528bool CalendarView::saveCalendars()
2529{ 2529{
2530 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2530 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
2531 KopiCalendarFile * cal = calendars.first(); 2531 KopiCalendarFile * cal = calendars.first();
2532 mCalendar->setDefaultCalendar( 1 ); 2532 mCalendar->setDefaultCalendar( 1 );
2533 mCalendar->setDefaultCalendarEnabledOnly(); 2533 mCalendar->setDefaultCalendarEnabledOnly();
2534 QString saveError; 2534 QString saveError;
2535 if ( !saveCalendar( MainWindow::defaultFileName() ) ) 2535 if ( !saveCalendar( MainWindow::defaultFileName() ) )
2536 saveError = cal->mName +"\n"; 2536 saveError = cal->mName +"\n";
2537 cal = calendars.next(); 2537 cal = calendars.next();
2538 while ( cal ) { 2538 while ( cal ) {
2539 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { 2539 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) {
2540 mCalendar->setDefaultCalendar( cal->mCalNumber ); 2540 mCalendar->setDefaultCalendar( cal->mCalNumber );
2541 mCalendar->setDefaultCalendarEnabledOnly(); 2541 mCalendar->setDefaultCalendarEnabledOnly();
2542 if ( saveCalendar( cal->mFileName ) ) 2542 if ( saveCalendar( cal->mFileName ) )
2543 cal->mLoadDt = QDateTime::currentDateTime(); 2543 cal->mLoadDt = QDateTime::currentDateTime();
2544 else 2544 else
2545 saveError += cal->mName + "\n"; 2545 saveError += cal->mName + "\n";
2546 } 2546 }
2547 cal = calendars.next(); 2547 cal = calendars.next();
2548 } 2548 }
2549 restoreCalendarSettings(); 2549 restoreCalendarSettings();
2550 //saveError = "test error"; 2550 //saveError = "test error";
2551 if ( !saveError.isEmpty() ) { 2551 if ( !saveError.isEmpty() ) {
2552 saveError = KGlobal::formatMessage( i18n("Calendar(s) not saved:"),0 )+"\n" + saveError; 2552 saveError = KGlobal::formatMessage( i18n("Calendar(s) not saved:"),0 )+"\n" + saveError;
2553 KMessageBox::error(this, saveError, i18n("Error saving data")); 2553 KMessageBox::error(this, saveError, i18n("Error saving data"));
2554 return false; 2554 return false;
2555 } 2555 }
2556 return true; 2556 return true;
2557} 2557}
2558bool CalendarView::saveCalendar( QString filename ) 2558bool CalendarView::saveCalendar( QString filename )
2559{ 2559{
2560 2560
2561 // Store back all unsaved data into calendar object 2561 // Store back all unsaved data into calendar object
2562 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() ); 2562 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() );
2563 if ( mViewManager->currentView() ) 2563 if ( mViewManager->currentView() )
2564 mViewManager->currentView()->flushView(); 2564 mViewManager->currentView()->flushView();
2565 2565
2566 2566
2567 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2); 2567 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2);
2568 mStorage->setSaveFormat( new ICalFormat() ); 2568 mStorage->setSaveFormat( new ICalFormat() );
2569 mStorage->setFileName( filename ); 2569 mStorage->setFileName( filename );
2570 bool success; 2570 bool success;
2571 success = mStorage->save(); 2571 success = mStorage->save();
2572 if ( !success ) { 2572 if ( !success ) {
2573 return false; 2573 return false;
2574 } 2574 }
2575 if ( filename == MainWindow::defaultFileName() ) { 2575 if ( filename == MainWindow::defaultFileName() ) {
2576 setLoadedFileVersion( lfv ); 2576 setLoadedFileVersion( lfv );
2577 watchSavedFile(); 2577 watchSavedFile();
2578 } 2578 }
2579 return true; 2579 return true;
2580} 2580}
2581 2581
2582void CalendarView::closeCalendar() 2582void CalendarView::closeCalendar()
2583{ 2583{
2584 2584
2585 // child windows no longer valid 2585 // child windows no longer valid
2586 clearAllViews(); 2586 clearAllViews();
2587 emit closingDown(); 2587 emit closingDown();
2588 2588
2589 mCalendar->close(); 2589 mCalendar->close();
2590 setModified(false); 2590 setModified(false);
2591 updateView(); 2591 updateView();
2592} 2592}
2593 2593
2594void CalendarView::archiveCalendar() 2594void CalendarView::archiveCalendar()
2595{ 2595{
2596 mDialogManager->showArchiveDialog(); 2596 mDialogManager->showArchiveDialog();
2597} 2597}
2598 2598
2599 2599
2600void CalendarView::readSettings() 2600void CalendarView::readSettings()
2601{ 2601{
2602 2602
2603 2603
2604 // mViewManager->showAgendaView(); 2604 // mViewManager->showAgendaView();
2605 QString str; 2605 QString str;
2606 //qDebug("CalendarView::readSettings() "); 2606 //qDebug("CalendarView::readSettings() ");
2607 // read settings from the KConfig, supplying reasonable 2607 // read settings from the KConfig, supplying reasonable
2608 // defaults where none are to be found 2608 // defaults where none are to be found
2609 KConfig *config = KOGlobals::config(); 2609 KConfig *config = KOGlobals::config();
2610#ifndef KORG_NOSPLITTER 2610#ifndef KORG_NOSPLITTER
2611 config->setGroup("KOrganizer Geometry"); 2611 config->setGroup("KOrganizer Geometry");
2612 2612
2613 QValueList<int> sizes = config->readIntListEntry("Separator1"); 2613 QValueList<int> sizes = config->readIntListEntry("Separator1");
2614 if (sizes.count() != 2) { 2614 if (sizes.count() != 2) {
2615 sizes << mDateNavigator->minimumSizeHint().width(); 2615 sizes << mDateNavigator->minimumSizeHint().width();
2616 sizes << 300; 2616 sizes << 300;
2617 } 2617 }
2618 mPanner->setSizes(sizes); 2618 mPanner->setSizes(sizes);
2619 2619
2620 sizes = config->readIntListEntry("Separator2"); 2620 sizes = config->readIntListEntry("Separator2");
2621 if ( ( mResourceView && sizes.count() == 4 ) || 2621 if ( ( mResourceView && sizes.count() == 4 ) ||
2622 ( !mResourceView && sizes.count() == 3 ) ) { 2622 ( !mResourceView && sizes.count() == 3 ) ) {
2623 mLeftSplitter->setSizes(sizes); 2623 mLeftSplitter->setSizes(sizes);
2624 } 2624 }
2625#endif 2625#endif
2626 globalFlagBlockAgenda = 1; 2626 globalFlagBlockAgenda = 1;
2627 mViewManager->showAgendaView(); 2627 mViewManager->showAgendaView();
2628 //mViewManager->readSettings( config ); 2628 //mViewManager->readSettings( config );
2629 mTodoList->restoreLayout(config,QString("Todo Layout")); 2629 mTodoList->restoreLayout(config,QString("Todo Layout"));
2630 readFilterSettings(config); 2630 readFilterSettings(config);
2631 2631
2632#ifdef DESKTOP_VERSION 2632#ifdef DESKTOP_VERSION
2633 config->setGroup("WidgetLayout"); 2633 config->setGroup("WidgetLayout");
2634 QStringList list; 2634 QStringList list;
2635 list = config->readListEntry("MainLayout"); 2635 list = config->readListEntry("MainLayout");
2636 int x,y,w,h; 2636 int x,y,w,h;
2637 if ( ! list.isEmpty() ) { 2637 if ( ! list.isEmpty() ) {
2638 x = list[0].toInt(); 2638 x = list[0].toInt();
2639 y = list[1].toInt(); 2639 y = list[1].toInt();
2640 w = list[2].toInt(); 2640 w = list[2].toInt();
2641 h = list[3].toInt(); 2641 h = list[3].toInt();
2642 KApplication::testCoords( &x,&y,&w,&h ); 2642 KApplication::testCoords( &x,&y,&w,&h );
2643 topLevelWidget()->setGeometry(x,y,w,h); 2643 topLevelWidget()->setGeometry(x,y,w,h);
2644 2644
2645 } else { 2645 } else {
2646 topLevelWidget()->setGeometry( 40 ,40 , 640, 440); 2646 topLevelWidget()->setGeometry( 40 ,40 , 640, 440);
2647 } 2647 }
2648 list = config->readListEntry("EditEventLayout"); 2648 list = config->readListEntry("EditEventLayout");
2649 if ( ! list.isEmpty() ) { 2649 if ( ! list.isEmpty() ) {
2650 x = list[0].toInt(); 2650 x = list[0].toInt();
2651 y = list[1].toInt(); 2651 y = list[1].toInt();
2652 w = list[2].toInt(); 2652 w = list[2].toInt();
2653 h = list[3].toInt(); 2653 h = list[3].toInt();
2654 KApplication::testCoords( &x,&y,&w,&h ); 2654 KApplication::testCoords( &x,&y,&w,&h );
2655 mEventEditor->setGeometry(x,y,w,h); 2655 mEventEditor->setGeometry(x,y,w,h);
2656 2656
2657 } 2657 }
2658 list = config->readListEntry("EditTodoLayout"); 2658 list = config->readListEntry("EditTodoLayout");
2659 if ( ! list.isEmpty() ) { 2659 if ( ! list.isEmpty() ) {
2660 x = list[0].toInt(); 2660 x = list[0].toInt();
2661 y = list[1].toInt(); 2661 y = list[1].toInt();
2662 w = list[2].toInt(); 2662 w = list[2].toInt();
2663 h = list[3].toInt(); 2663 h = list[3].toInt();
2664 KApplication::testCoords( &x,&y,&w,&h ); 2664 KApplication::testCoords( &x,&y,&w,&h );
2665 mTodoEditor->setGeometry(x,y,w,h); 2665 mTodoEditor->setGeometry(x,y,w,h);
2666 2666
2667 } 2667 }
2668 list = config->readListEntry("ViewerLayout"); 2668 list = config->readListEntry("ViewerLayout");
2669 if ( ! list.isEmpty() ) { 2669 if ( ! list.isEmpty() ) {
2670 x = list[0].toInt(); 2670 x = list[0].toInt();
2671 y = list[1].toInt(); 2671 y = list[1].toInt();
2672 w = list[2].toInt(); 2672 w = list[2].toInt();
2673 h = list[3].toInt(); 2673 h = list[3].toInt();
2674 KApplication::testCoords( &x,&y,&w,&h ); 2674 KApplication::testCoords( &x,&y,&w,&h );
2675 getEventViewerDialog()->setGeometry(x,y,w,h); 2675 getEventViewerDialog()->setGeometry(x,y,w,h);
2676 } 2676 }
2677#endif 2677#endif
2678 config->setGroup( "Views" ); 2678 config->setGroup( "Views" );
2679 int dateCount = config->readNumEntry( "ShownDatesCount", 7 ); 2679 int dateCount = config->readNumEntry( "ShownDatesCount", 7 );
2680 2680
2681 QValueList<int> sizes = config->readIntListEntry("Left Splitter Frame"); 2681 QValueList<int> sizes = config->readIntListEntry("Left Splitter Frame");
2682 2682
2683 int resetval = 0; 2683 int resetval = 0;
2684 int maxVal = 0; 2684 int maxVal = 0;
2685 if (sizes.count() != 3) { 2685 if (sizes.count() != 3) {
2686 if ( KOPrefs::instance()->mVerticalScreen ) { 2686 if ( KOPrefs::instance()->mVerticalScreen ) {
2687 resetval = mDateNavigator->sizeHint().width()+2; 2687 resetval = mDateNavigator->sizeHint().width()+2;
2688 } else { 2688 } else {
2689 resetval = mDateNavigator->sizeHint().height()+2; 2689 resetval = mDateNavigator->sizeHint().height()+2;
2690 } 2690 }
2691 } 2691 }
2692 if ( resetval ) { 2692 if ( resetval ) {
2693 sizes.clear(); 2693 sizes.clear();
2694 if ( KOPrefs::instance()->mVerticalScreen ) { 2694 if ( KOPrefs::instance()->mVerticalScreen ) {
2695 maxVal = QApplication::desktop()->width() -10; 2695 maxVal = QApplication::desktop()->width() -10;
2696 } else { 2696 } else {
2697 maxVal = QApplication::desktop()->height()-10; 2697 maxVal = QApplication::desktop()->height()-10;
2698 } 2698 }
2699 sizes << resetval; 2699 sizes << resetval;
2700 if ( maxVal < resetval + resetval) 2700 if ( maxVal < resetval + resetval)
2701 resetval = maxVal - resetval; 2701 resetval = maxVal - resetval;
2702 sizes << resetval; 2702 sizes << resetval;
2703 sizes << 100; 2703 sizes << 100;
2704 } 2704 }
2705 mLeftFrame->setSizes(sizes); 2705 mLeftFrame->setSizes(sizes);
2706 sizes = config->readIntListEntry("Main Splitter Frame"); 2706 sizes = config->readIntListEntry("Main Splitter Frame");
2707 resetval = 0; 2707 resetval = 0;
2708 maxVal = 0; 2708 maxVal = 0;
2709 if (sizes.count() != 2) { 2709 if (sizes.count() != 2) {
2710 if ( !KOPrefs::instance()->mVerticalScreen ) { 2710 if ( !KOPrefs::instance()->mVerticalScreen ) {
2711 resetval = mDateNavigator->sizeHint().width()+2; 2711 resetval = mDateNavigator->sizeHint().width()+2;
2712 } else { 2712 } else {
2713 resetval = mDateNavigator->sizeHint().height()+2; 2713 resetval = mDateNavigator->sizeHint().height()+2;
2714 } 2714 }
2715 } 2715 }
2716 if ( resetval ) { 2716 if ( resetval ) {
2717 sizes.clear(); 2717 sizes.clear();
2718 if ( !KOPrefs::instance()->mVerticalScreen ) { 2718 if ( !KOPrefs::instance()->mVerticalScreen ) {
2719 maxVal = QApplication::desktop()->width() -10; 2719 maxVal = QApplication::desktop()->width() -10;
2720 } else { 2720 } else {
2721 maxVal = QApplication::desktop()->height()-10; 2721 maxVal = QApplication::desktop()->height()-10;
2722 } 2722 }
2723 sizes << resetval; 2723 sizes << resetval;
2724 if ( maxVal < resetval + resetval) 2724 if ( maxVal < resetval + resetval)
2725 resetval = maxVal - resetval; 2725 resetval = maxVal - resetval;
2726 sizes << resetval; 2726 sizes << resetval;
2727 } 2727 }
2728 mMainFrame->setSizes(sizes); 2728 mMainFrame->setSizes(sizes);
2729 if ( dateCount == 5 ) mNavigator->selectWorkWeek(); 2729 if ( dateCount == 5 ) mNavigator->selectWorkWeek();
2730 else if ( dateCount == 7 ) mNavigator->selectWeek(); 2730 else if ( dateCount == 7 ) mNavigator->selectWeek();
2731 else mNavigator->selectDates( dateCount ); 2731 else mNavigator->selectDates( dateCount );
2732 // mViewManager->readSettings( config ); 2732 // mViewManager->readSettings( config );
2733 updateConfig(); 2733 updateConfig();
2734 globalFlagBlockAgenda = 2; 2734 globalFlagBlockAgenda = 2;
2735 mViewManager->readSettings( config ); 2735 mViewManager->readSettings( config );
2736 QTimer::singleShot( 1, mDateNavigator, SLOT ( setResizeEnabled() ) ); 2736 QTimer::singleShot( 1, mDateNavigator, SLOT ( setResizeEnabled() ) );
2737} 2737}
2738 2738
2739void CalendarView::checkSuspendAlarm() 2739void CalendarView::checkSuspendAlarm()
2740{ 2740{
2741 if ( mSuspendTimer->isActive() ) { 2741 if ( mSuspendTimer->isActive() ) {
2742 KMessageBox::information( this, i18n("<b>WARNING:</b> There is a pending suspended alarm!"), i18n("Pending Suspend Alarm")); 2742 KMessageBox::information( this, i18n("<b>WARNING:</b> There is a pending suspended alarm!"), i18n("Pending Suspend Alarm"));
2743 } 2743 }
2744} 2744}
2745void CalendarView::writeSettings() 2745void CalendarView::writeSettings()
2746{ 2746{
2747 // kdDebug() << "CalendarView::writeSettings" << endl; 2747 // kdDebug() << "CalendarView::writeSettings" << endl;
2748 2748
2749 KConfig *config = KOGlobals::config(); 2749 KConfig *config = KOGlobals::config();
2750 2750
2751 mViewManager->writeSettings( config ); 2751 mViewManager->writeSettings( config );
2752 mTodoList->saveLayout(config,QString("Todo Layout")); 2752 mTodoList->saveLayout(config,QString("Todo Layout"));
2753 mDialogManager->writeSettings( config ); 2753 mDialogManager->writeSettings( config );
2754 //KOPrefs::instance()->usrWriteConfig(); 2754 //KOPrefs::instance()->usrWriteConfig();
2755 KOPrefs::instance()->writeConfig(); 2755 KOPrefs::instance()->writeConfig();
2756 2756
2757 writeFilterSettings(config); 2757 writeFilterSettings(config);
2758 config->setGroup( "AppRun" ); 2758 config->setGroup( "AppRun" );
2759 QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) ); 2759 QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) );
2760 int days = dt.daysTo( QDate::currentDate() ); 2760 int days = dt.daysTo( QDate::currentDate() );
2761 dt = dt.addDays( days ); 2761 dt = dt.addDays( days );
2762 int secs = dt.secsTo( QDateTime::currentDateTime() ); 2762 int secs = dt.secsTo( QDateTime::currentDateTime() );
2763 config->writeEntry( "LatestProgramStopDays", days ); 2763 config->writeEntry( "LatestProgramStopDays", days );
2764 config->writeEntry( "LatestProgramStopSecs", secs ); 2764 config->writeEntry( "LatestProgramStopSecs", secs );
2765 //qDebug("KO: Writing stop time: %d ", secs); 2765 //qDebug("KO: Writing stop time: %d ", secs);
2766 //qDebug("KO: Current Time %s ",QDateTime::currentDateTime().toString().latin1() ); 2766 //qDebug("KO: Current Time %s ",QDateTime::currentDateTime().toString().latin1() );
2767 //QDateTime latest = dt.addSecs ( secs ); 2767 //QDateTime latest = dt.addSecs ( secs );
2768 //qDebug("KO: Termination on %s ", latest.toString().latin1()); 2768 //qDebug("KO: Termination on %s ", latest.toString().latin1());
2769 config->setGroup( "Views" ); 2769 config->setGroup( "Views" );
2770 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() ); 2770 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() );
2771 2771
2772#if 0 2772#if 0
2773 qDebug("********************* "); 2773 qDebug("********************* ");
2774 qDebug("Testcode secsto "); 2774 qDebug("Testcode secsto ");
2775 QDateTime dt_nodaylight ( QDate (2005,3,26), QTime( 0,0,0 ) ); 2775 QDateTime dt_nodaylight ( QDate (2005,3,26), QTime( 0,0,0 ) );
2776 QDateTime dt_daylight ( QDate (2005,3,29), QTime( 0,0,0 ) ); 2776 QDateTime dt_daylight ( QDate (2005,3,29), QTime( 0,0,0 ) );
2777 int secsto = dt_nodaylight.secsTo( dt_daylight ); 2777 int secsto = dt_nodaylight.secsTo( dt_daylight );
2778 QDateTime dt_daylight_wrong = dt_nodaylight.addSecs( secsto ); 2778 QDateTime dt_daylight_wrong = dt_nodaylight.addSecs( secsto );
2779 qDebug("dt nodaylight %s ",dt_nodaylight.toString().latin1() ); 2779 qDebug("dt nodaylight %s ",dt_nodaylight.toString().latin1() );
2780 qDebug("dt daylight %s ",dt_daylight.toString().latin1() ); 2780 qDebug("dt daylight %s ",dt_daylight.toString().latin1() );
2781 qDebug("dt daylight_wrong %s ",dt_daylight_wrong.toString().latin1() ); 2781 qDebug("dt daylight_wrong %s ",dt_daylight_wrong.toString().latin1() );
2782 qDebug("Computed secsTo %d . in minutes: %d . in hours: %d ", secsto, secsto/60, secsto/3600); 2782 qDebug("Computed secsTo %d . in minutes: %d . in hours: %d ", secsto, secsto/60, secsto/3600);
2783 qDebug("********************* testcode end"); 2783 qDebug("********************* testcode end");
2784 2784
2785#endif 2785#endif
2786 2786
2787 QValueList<int> listINT = mLeftFrame->sizes(); 2787 QValueList<int> listINT = mLeftFrame->sizes();
2788 config->writeEntry("Left Splitter Frame",listINT); 2788 config->writeEntry("Left Splitter Frame",listINT);
2789 QValueList<int> listINT2 = mMainFrame->sizes(); 2789 QValueList<int> listINT2 = mMainFrame->sizes();
2790 config->writeEntry("Main Splitter Frame",listINT2); 2790 config->writeEntry("Main Splitter Frame",listINT2);
2791#ifdef DESKTOP_VERSION 2791#ifdef DESKTOP_VERSION
2792 config->setGroup("WidgetLayout"); 2792 config->setGroup("WidgetLayout");
2793 QStringList list ;//= config->readListEntry("MainLayout"); 2793 QStringList list ;//= config->readListEntry("MainLayout");
2794 int x,y,w,h; 2794 int x,y,w,h;
2795 QWidget* wid; 2795 QWidget* wid;
2796 wid = topLevelWidget(); 2796 wid = topLevelWidget();
2797 x = wid->geometry().x(); 2797 x = wid->geometry().x();
2798 y = wid->geometry().y(); 2798 y = wid->geometry().y();
2799 w = wid->width(); 2799 w = wid->width();
2800 h = wid->height(); 2800 h = wid->height();
2801 list.clear(); 2801 list.clear();
2802 list << QString::number( x ); 2802 list << QString::number( x );
2803 list << QString::number( y ); 2803 list << QString::number( y );
2804 list << QString::number( w ); 2804 list << QString::number( w );
2805 list << QString::number( h ); 2805 list << QString::number( h );
2806 config->writeEntry("MainLayout",list ); 2806 config->writeEntry("MainLayout",list );
2807 2807
2808 wid = mEventEditor; 2808 wid = mEventEditor;
2809 x = wid->geometry().x(); 2809 x = wid->geometry().x();
2810 y = wid->geometry().y(); 2810 y = wid->geometry().y();
2811 w = wid->width(); 2811 w = wid->width();
2812 h = wid->height(); 2812 h = wid->height();
2813 list.clear(); 2813 list.clear();
2814 list << QString::number( x ); 2814 list << QString::number( x );
2815 list << QString::number( y ); 2815 list << QString::number( y );
2816 list << QString::number( w ); 2816 list << QString::number( w );
2817 list << QString::number( h ); 2817 list << QString::number( h );
2818 config->writeEntry("EditEventLayout",list ); 2818 config->writeEntry("EditEventLayout",list );
2819 2819
2820 wid = mTodoEditor; 2820 wid = mTodoEditor;
2821 x = wid->geometry().x(); 2821 x = wid->geometry().x();
2822 y = wid->geometry().y(); 2822 y = wid->geometry().y();
2823 w = wid->width(); 2823 w = wid->width();
2824 h = wid->height(); 2824 h = wid->height();
2825 list.clear(); 2825 list.clear();
2826 list << QString::number( x ); 2826 list << QString::number( x );
2827 list << QString::number( y ); 2827 list << QString::number( y );
2828 list << QString::number( w ); 2828 list << QString::number( w );
2829 list << QString::number( h ); 2829 list << QString::number( h );
2830 config->writeEntry("EditTodoLayout",list ); 2830 config->writeEntry("EditTodoLayout",list );
2831 wid = getEventViewerDialog(); 2831 wid = getEventViewerDialog();
2832 x = wid->geometry().x(); 2832 x = wid->geometry().x();
2833 y = wid->geometry().y(); 2833 y = wid->geometry().y();
2834 w = wid->width(); 2834 w = wid->width();
2835 h = wid->height(); 2835 h = wid->height();
2836 list.clear(); 2836 list.clear();
2837 list << QString::number( x ); 2837 list << QString::number( x );
2838 list << QString::number( y ); 2838 list << QString::number( y );
2839 list << QString::number( w ); 2839 list << QString::number( w );
2840 list << QString::number( h ); 2840 list << QString::number( h );
2841 config->writeEntry("ViewerLayout",list ); 2841 config->writeEntry("ViewerLayout",list );
2842 wid = mDialogManager->getSearchDialog(); 2842 wid = mDialogManager->getSearchDialog();
2843 if ( wid ) { 2843 if ( wid ) {
2844 x = wid->geometry().x(); 2844 x = wid->geometry().x();
2845 y = wid->geometry().y(); 2845 y = wid->geometry().y();
2846 w = wid->width(); 2846 w = wid->width();
2847 h = wid->height(); 2847 h = wid->height();
2848 list.clear(); 2848 list.clear();
2849 list << QString::number( x ); 2849 list << QString::number( x );
2850 list << QString::number( y ); 2850 list << QString::number( y );
2851 list << QString::number( w ); 2851 list << QString::number( w );
2852 list << QString::number( h ); 2852 list << QString::number( h );
2853 config->writeEntry("SearchLayout",list ); 2853 config->writeEntry("SearchLayout",list );
2854 } 2854 }
2855#endif 2855#endif
2856 2856
2857 2857
2858 config->sync(); 2858 config->sync();
2859} 2859}
2860 2860
2861void CalendarView::readFilterSettings(KConfig *config) 2861void CalendarView::readFilterSettings(KConfig *config)
2862{ 2862{
2863 // kdDebug() << "CalendarView::readFilterSettings()" << endl; 2863 // kdDebug() << "CalendarView::readFilterSettings()" << endl;
2864 2864
2865 mFilters.clear(); 2865 mFilters.clear();
2866 2866
2867 config->setGroup("General"); 2867 config->setGroup("General");
2868 QStringList filterList = config->readListEntry("CalendarFilters"); 2868 QStringList filterList = config->readListEntry("CalendarFilters");
2869 2869
2870 QStringList::ConstIterator it = filterList.begin(); 2870 QStringList::ConstIterator it = filterList.begin();
2871 QStringList::ConstIterator end = filterList.end(); 2871 QStringList::ConstIterator end = filterList.end();
2872 while(it != end) { 2872 while(it != end) {
2873 // kdDebug() << " filter: " << (*it) << endl; 2873 // kdDebug() << " filter: " << (*it) << endl;
2874 2874
2875 CalFilter *filter; 2875 CalFilter *filter;
2876 filter = new CalFilter(*it); 2876 filter = new CalFilter(*it);
2877 config->setGroup("Filter_" + (*it).utf8()); 2877 config->setGroup("Filter_" + (*it).utf8());
2878 //qDebug("readFilterSettings %d ",config->readNumEntry("Criteria",0) ); 2878 //qDebug("readFilterSettings %d ",config->readNumEntry("Criteria",0) );
2879 filter->setCriteria(config->readNumEntry("Criteria",0)); 2879 filter->setCriteria(config->readNumEntry("Criteria",0));
2880 filter->setCategoryList(config->readListEntry("CategoryList")); 2880 filter->setCategoryList(config->readListEntry("CategoryList"));
2881 mFilters.append(filter); 2881 mFilters.append(filter);
2882 2882
2883 ++it; 2883 ++it;
2884 } 2884 }
2885 2885
2886 if (mFilters.count() == 0) { 2886 if (mFilters.count() == 0) {
2887 CalFilter *filter = new CalFilter(i18n("Default")); 2887 CalFilter *filter = new CalFilter(i18n("Default"));
2888 mFilters.append(filter); 2888 mFilters.append(filter);
2889 } 2889 }
2890 mFilterView->updateFilters(); 2890 mFilterView->updateFilters();
2891 config->setGroup("FilterView"); 2891 config->setGroup("FilterView");
2892 2892
2893 mFilterView->blockSignals(true); 2893 mFilterView->blockSignals(true);
2894 mFilterView->setFiltersEnabled(config->readBoolEntry("FilterEnabled")); 2894 mFilterView->setFiltersEnabled(config->readBoolEntry("FilterEnabled"));
2895 mFilterView->setSelectedFilter(config->readEntry("Current Filter")); 2895 mFilterView->setSelectedFilter(config->readEntry("Current Filter"));
2896 mFilterView->blockSignals(false); 2896 mFilterView->blockSignals(false);
2897 // We do it manually to avoid it being done twice by the above calls 2897 // We do it manually to avoid it being done twice by the above calls
2898 updateFilter(); 2898 updateFilter();
2899} 2899}
2900 2900
2901void CalendarView::writeFilterSettings(KConfig *config) 2901void CalendarView::writeFilterSettings(KConfig *config)
2902{ 2902{
2903 // kdDebug() << "CalendarView::writeFilterSettings()" << endl; 2903 // kdDebug() << "CalendarView::writeFilterSettings()" << endl;
2904 2904
2905 QStringList filterList; 2905 QStringList filterList;
2906 2906
2907 CalFilter *filter = mFilters.first(); 2907 CalFilter *filter = mFilters.first();
2908 while(filter) { 2908 while(filter) {
2909 // kdDebug() << " fn: " << filter->name() << endl; 2909 // kdDebug() << " fn: " << filter->name() << endl;
2910 filterList << filter->name(); 2910 filterList << filter->name();
2911 config->setGroup("Filter_" + filter->name().utf8()); 2911 config->setGroup("Filter_" + filter->name().utf8());
2912 config->writeEntry("Criteria",filter->criteria()); 2912 config->writeEntry("Criteria",filter->criteria());
2913 config->writeEntry("CategoryList",filter->categoryList()); 2913 config->writeEntry("CategoryList",filter->categoryList());
2914 filter = mFilters.next(); 2914 filter = mFilters.next();
2915 } 2915 }
2916 config->setGroup("General"); 2916 config->setGroup("General");
2917 config->writeEntry("CalendarFilters",filterList); 2917 config->writeEntry("CalendarFilters",filterList);
2918 2918
2919 config->setGroup("FilterView"); 2919 config->setGroup("FilterView");
2920 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled()); 2920 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled());
2921 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name()); 2921 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name());
2922} 2922}
2923 2923
2924 2924
2925void CalendarView::goToday() 2925void CalendarView::goToday()
2926{ 2926{
2927 if ( mViewManager->currentView()->isMonthView() ) 2927 if ( mViewManager->currentView()->isMonthView() )
2928 mNavigator->selectTodayMonth(); 2928 mNavigator->selectTodayMonth();
2929 else 2929 else
2930 mNavigator->selectToday(); 2930 mNavigator->selectToday();
2931} 2931}
2932 2932
2933void CalendarView::goNext() 2933void CalendarView::goNext()
2934{ 2934{
2935 mNavigator->selectNext(); 2935 mNavigator->selectNext();
2936} 2936}
2937 2937
2938void CalendarView::goPrevious() 2938void CalendarView::goPrevious()
2939{ 2939{
2940 mNavigator->selectPrevious(); 2940 mNavigator->selectPrevious();
2941} 2941}
2942void CalendarView::goNextMonth() 2942void CalendarView::goNextMonth()
2943{ 2943{
2944 mNavigator->selectNextMonth(); 2944 mNavigator->selectNextMonth();
2945} 2945}
2946 2946
2947void CalendarView::goPreviousMonth() 2947void CalendarView::goPreviousMonth()
2948{ 2948{
2949 mNavigator->selectPreviousMonth(); 2949 mNavigator->selectPreviousMonth();
2950} 2950}
2951 2951
2952void CalendarView::updateConfig() 2952void CalendarView::updateConfig()
2953{ 2953{
2954 if ( KOPrefs::instance()->mUseAppColors ) 2954 if ( KOPrefs::instance()->mUseAppColors )
2955 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true ); 2955 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true );
2956 emit configChanged(); 2956 emit configChanged();
2957 mTodoList->updateConfig(); 2957 mTodoList->updateConfig();
2958 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont); 2958 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont);
2959 mCalendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 2959 mCalendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
2960 // To make the "fill window" configurations work 2960 // To make the "fill window" configurations work
2961 //mViewManager->raiseCurrentView(); 2961 //mViewManager->raiseCurrentView();
2962} 2962}
2963 2963
2964 2964
2965void CalendarView::eventChanged(Event *event) 2965void CalendarView::eventChanged(Event *event)
2966{ 2966{
2967 changeEventDisplay(event,KOGlobals::EVENTEDITED); 2967 changeEventDisplay(event,KOGlobals::EVENTEDITED);
2968 //updateUnmanagedViews(); 2968 //updateUnmanagedViews();
2969} 2969}
2970 2970
2971void CalendarView::eventAdded(Event *event) 2971void CalendarView::eventAdded(Event *event)
2972{ 2972{
2973 changeEventDisplay(event,KOGlobals::EVENTADDED); 2973 changeEventDisplay(event,KOGlobals::EVENTADDED);
2974} 2974}
2975 2975
2976void CalendarView::eventToBeDeleted(Event *) 2976void CalendarView::eventToBeDeleted(Event *)
2977{ 2977{
2978 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl; 2978 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl;
2979} 2979}
2980 2980
2981void CalendarView::eventDeleted() 2981void CalendarView::eventDeleted()
2982{ 2982{
2983 changeEventDisplay(0,KOGlobals::EVENTDELETED); 2983 changeEventDisplay(0,KOGlobals::EVENTDELETED);
2984} 2984}
2985void CalendarView::changeTodoDisplay(Todo *which, int action) 2985void CalendarView::changeTodoDisplay(Todo *which, int action)
2986{ 2986{
2987 changeIncidenceDisplay((Incidence *)which, action); 2987 changeIncidenceDisplay((Incidence *)which, action);
2988 mDateNavigator->updateView(); //LR 2988 mDateNavigator->updateView(); //LR
2989 //mDialogManager->updateSearchDialog(); 2989 //mDialogManager->updateSearchDialog();
2990 2990
2991 if (which) { 2991 if (which) {
2992 mViewManager->updateWNview(); 2992 mViewManager->updateWNview();
2993 //mTodoList->updateView(); 2993 //mTodoList->updateView();
2994 } 2994 }
2995 2995
2996} 2996}
2997 2997
2998void CalendarView::changeIncidenceDisplay(Incidence *which, int action) 2998void CalendarView::changeIncidenceDisplay(Incidence *which, int action)
2999{ 2999{
3000 updateUnmanagedViews(); 3000 updateUnmanagedViews();
3001 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action ); 3001 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action );
3002 if ( action == KOGlobals::EVENTDELETED ) { //delete 3002 if ( action == KOGlobals::EVENTDELETED ) { //delete
3003 mCalendar->checkAlarmForIncidence( 0, true ); 3003 mCalendar->checkAlarmForIncidence( 0, true );
3004 if ( mEventViewerDialog ) 3004 if ( mEventViewerDialog )
3005 mEventViewerDialog->hide(); 3005 mEventViewerDialog->hide();
3006 } 3006 }
3007 else 3007 else
3008 mCalendar->checkAlarmForIncidence( which , false ); 3008 mCalendar->checkAlarmForIncidence( which , false );
3009} 3009}
3010 3010
3011// most of the changeEventDisplays() right now just call the view's 3011// most of the changeEventDisplays() right now just call the view's
3012// total update mode, but they SHOULD be recoded to be more refresh-efficient. 3012// total update mode, but they SHOULD be recoded to be more refresh-efficient.
3013void CalendarView::changeEventDisplay(Event *which, int action) 3013void CalendarView::changeEventDisplay(Event *which, int action)
3014{ 3014{
3015 // kdDebug() << "CalendarView::changeEventDisplay" << endl; 3015 // kdDebug() << "CalendarView::changeEventDisplay" << endl;
3016 changeIncidenceDisplay((Incidence *)which, action); 3016 changeIncidenceDisplay((Incidence *)which, action);
3017 static bool clearallviews = false; 3017 static bool clearallviews = false;
3018 if ( KOPrefs::instance()->mGlobalUpdateDisabled ) { 3018 if ( KOPrefs::instance()->mGlobalUpdateDisabled ) {
3019 if ( clearallviews ) { 3019 if ( clearallviews ) {
3020 clearAllViews(); 3020 clearAllViews();
3021 clearallviews = false; 3021 clearallviews = false;
3022 } 3022 }
3023 return; 3023 return;
3024 } 3024 }
3025 clearallviews = true; 3025 clearallviews = true;
3026 mDateNavigator->updateView(); 3026 mDateNavigator->updateView();
3027 //mDialogManager->updateSearchDialog(); 3027 //mDialogManager->updateSearchDialog();
3028 if (which) { 3028 if (which) {
3029 // If there is an event view visible update the display 3029 // If there is an event view visible update the display
3030 mViewManager->currentView()->changeEventDisplay(which,action); 3030 mViewManager->currentView()->changeEventDisplay(which,action);
3031 // TODO: check, if update needed 3031 // TODO: check, if update needed
3032 // if (which->getTodoStatus()) { 3032 // if (which->getTodoStatus()) {
3033 mTodoList->updateView(); 3033 mTodoList->updateView();
3034 if ( action != KOGlobals::EVENTDELETED && KOPrefs::instance()->mDetectConflicts ) { 3034 if ( action != KOGlobals::EVENTDELETED && KOPrefs::instance()->mDetectConflicts ) {
3035 mConflictingEvent = which ; 3035 mConflictingEvent = which ;
3036 int time = 1000; 3036 int time = 1000;
3037#ifdef DESKTOP_VERSION 3037#ifdef DESKTOP_VERSION
3038 time = 500; 3038 time = 500;
3039#endif 3039#endif
3040 bool checkC = false; 3040 bool checkC = false;
3041 if ( mConflictingEvent->doesFloat() ) { 3041 if ( mConflictingEvent->doesFloat() ) {
3042 checkC = KOPrefs::instance()->mCheckConflictsAllDayAllDay 3042 checkC = KOPrefs::instance()->mCheckConflictsAllDayAllDay
3043 || KOPrefs::instance()->mCheckConflictsAllDayNonAD; 3043 || KOPrefs::instance()->mCheckConflictsAllDayNonAD;
3044 } else { 3044 } else {
3045 checkC = KOPrefs::instance()->mCheckConflictsNonADAllDay 3045 checkC = KOPrefs::instance()->mCheckConflictsNonADAllDay
3046 || KOPrefs::instance()->mCheckConflictsNonADNonAD; 3046 || KOPrefs::instance()->mCheckConflictsNonADNonAD;
3047 } 3047 }
3048 if ( !KOPrefs::instance()->mIncludeFree && mConflictingEvent->transparency() == KCal::Event::Transparent ) 3048 if ( !KOPrefs::instance()->mIncludeFree && mConflictingEvent->transparency() == KCal::Event::Transparent )
3049 checkC = false; 3049 checkC = false;
3050 if ( checkC ) 3050 if ( checkC )
3051 QTimer::singleShot( time, this, SLOT ( checkConflictForEvent() ) ); 3051 QTimer::singleShot( time, this, SLOT ( checkConflictForEvent() ) );
3052 } 3052 }
3053 // } 3053 // }
3054 } else { 3054 } else {
3055 mViewManager->currentView()->updateView(); 3055 mViewManager->currentView()->updateView();
3056 } 3056 }
3057} 3057}
3058void CalendarView::checkConflictForEvent() 3058void CalendarView::checkConflictForEvent()
3059{ 3059{
3060 3060
3061 if (!KOPrefs::instance()->mConfirm) 3061 if (!KOPrefs::instance()->mConfirm)
3062 return; 3062 return;
3063 if ( ! mConflictingEvent ) return; 3063 if ( ! mConflictingEvent ) return;
3064 Event * conflictingEvent = mConflictingEvent; 3064 Event * conflictingEvent = mConflictingEvent;
3065 mConflictingEvent = 0; 3065 mConflictingEvent = 0;
3066 QDateTime current = QDateTime::currentDateTime(); 3066 QDateTime current = QDateTime::currentDateTime();
3067 if ( ! conflictingEvent->matchTime( &current, 0 ) ) { 3067 if ( ! conflictingEvent->matchTime( &current, 0 ) ) {
3068 return; 3068 return;
3069 } 3069 }
3070 CalFilter *filterIN = 0; 3070 CalFilter *filterIN = 0;
3071 CalFilter *filterALL = 0; 3071 CalFilter *filterALL = 0;
3072 CalFilter *filter = mFilters.first(); 3072 CalFilter *filter = mFilters.first();
3073 while(filter) { 3073 while(filter) {
3074 if ( filter->name() == KOPrefs::instance()->mFilterConflictEditItem) 3074 if ( filter->name() == KOPrefs::instance()->mFilterConflictEditItem)
3075 filterIN = filter; 3075 filterIN = filter;
3076 if ( filter->name() == KOPrefs::instance()->mFilterConflictAllItem ) 3076 if ( filter->name() == KOPrefs::instance()->mFilterConflictAllItem )
3077 filterALL = filter; 3077 filterALL = filter;
3078 filter = mFilters.next(); 3078 filter = mFilters.next();
3079 } 3079 }
3080 if ( filterIN ) { 3080 if ( filterIN ) {
3081 if ( !filterIN->filterCalendarItem( conflictingEvent ) ) { 3081 if ( !filterIN->filterCalendarItem( conflictingEvent ) ) {
3082 return; 3082 return;
3083 } 3083 }
3084 } 3084 }
3085 QPtrList<Event> testlist = mCalendar->events(); 3085 QPtrList<Event> testlist = mCalendar->events();
3086 Event * test = testlist.first(); 3086 Event * test = testlist.first();
3087 QDateTime conflict; 3087 QDateTime conflict;
3088 QDateTime retVal; 3088 QDateTime retVal;
3089 bool found = false; 3089 bool found = false;
3090 Event * cE = 0; 3090 Event * cE = 0;
3091 bool chAD = KOPrefs::instance()->mCheckConflictsAllDayAllDay; 3091 bool chAD = KOPrefs::instance()->mCheckConflictsAllDayAllDay;
3092 bool chNad = KOPrefs::instance()->mCheckConflictsAllDayNonAD; 3092 bool chNad = KOPrefs::instance()->mCheckConflictsAllDayNonAD;
3093 if ( !conflictingEvent->doesFloat() ) { 3093 if ( !conflictingEvent->doesFloat() ) {
3094 chAD = KOPrefs::instance()->mCheckConflictsNonADAllDay; 3094 chAD = KOPrefs::instance()->mCheckConflictsNonADAllDay;
3095 chNad = KOPrefs::instance()->mCheckConflictsNonADNonAD; 3095 chNad = KOPrefs::instance()->mCheckConflictsNonADNonAD;
3096 } 3096 }
3097 topLevelWidget()->setCaption( i18n("Checking conflicts ... please wait") ); 3097 topLevelWidget()->setCaption( i18n("Checking conflicts ... please wait") );
3098 while ( test ) { 3098 while ( test ) {
3099 qApp->processEvents(); 3099 qApp->processEvents();
3100 bool skip = ( test->doesFloat() && !chAD ) || ( !test->doesFloat() && !chNad ); 3100 bool skip = ( test->doesFloat() && !chAD ) || ( !test->doesFloat() && !chNad );
3101 3101
3102 if ( !skip ) { 3102 if ( !skip ) {
3103 if ( !KOPrefs::instance()->mIncludeFree && test->transparency() == KCal::Event::Transparent ) 3103 if ( !KOPrefs::instance()->mIncludeFree && test->transparency() == KCal::Event::Transparent )
3104 skip = true; 3104 skip = true;
3105 } 3105 }
3106 if ( !skip ) { 3106 if ( !skip ) {
3107 if ( filterALL ) { 3107 if ( filterALL ) {
3108 if ( !filterALL->filterCalendarItem( test ) ) { 3108 if ( !filterALL->filterCalendarItem( test ) ) {
3109 skip = true; 3109 skip = true;
3110 } 3110 }
3111 } 3111 }
3112 if ( !skip ) { 3112 if ( !skip ) {
3113 if ( found ) 3113 if ( found )
3114 skip = !test->matchTime( &current, &conflict ); 3114 skip = !test->matchTime( &current, &conflict );
3115 else 3115 else
3116 skip = !test->matchTime( &current, 0 ); 3116 skip = !test->matchTime( &current, 0 );
3117 if ( !skip ) { 3117 if ( !skip ) {
3118 if ( conflictingEvent->isOverlapping ( test, &retVal, &current ) ) { 3118 if ( conflictingEvent->isOverlapping ( test, &retVal, &current ) ) {
3119 if ( ! found ) { 3119 if ( ! found ) {
3120 conflict = retVal; 3120 conflict = retVal;
3121 cE = test; 3121 cE = test;
3122 } else { 3122 } else {
3123 if ( retVal < conflict ) { 3123 if ( retVal < conflict ) {
3124 conflict = retVal; 3124 conflict = retVal;
3125 cE = test; 3125 cE = test;
3126 } 3126 }
3127 } 3127 }
3128 found = true; 3128 found = true;
3129 } 3129 }
3130 } 3130 }
3131 } 3131 }
3132 } 3132 }
3133 test = testlist.next(); 3133 test = testlist.next();
3134 } 3134 }
3135 topLevelWidget()->setCaption( i18n("KO/Pi") ); 3135 topLevelWidget()->setCaption( i18n("KO/Pi") );
3136 if ( found ) { 3136 if ( found ) {
3137 QString mess = i18n("The event\n%1\nconflicts with event\n%2\nat date\n%3.\n").arg(KGlobal::formatMessage ( conflictingEvent->summary(),0 ) ).arg( KGlobal::formatMessage ( cE->summary(),0 )).arg(KGlobal::locale()->formatDate(conflict.date()) ) ; 3137 QString mess = i18n("The event\n%1\nconflicts with event\n%2\nat date\n%3.\n").arg(KGlobal::formatMessage ( conflictingEvent->summary(),0 ) ).arg( KGlobal::formatMessage ( cE->summary(),0 )).arg(KGlobal::locale()->formatDate(conflict.date()) ) ;
3138 qApp->processEvents(); 3138 qApp->processEvents();
3139 int km = KMessageBox::warningContinueCancel(this,mess, 3139 int km = KMessageBox::warningContinueCancel(this,mess,
3140 i18n("KO/Pi Conflict detected"),i18n("Show date"),i18n("No problem!")); 3140 i18n("KO/Pi Conflict detected"),i18n("Show date"),i18n("No problem!"));
3141 if ( km != KMessageBox::Continue ) { 3141 if ( km != KMessageBox::Continue ) {
3142 return; 3142 return;
3143 } 3143 }
3144 if ( mViewManager->currentView() != mViewManager->agendaView() || mNavigator->selectedDates().count() > 1 ) 3144 if ( mViewManager->currentView() != mViewManager->agendaView() || mNavigator->selectedDates().count() > 1 )
3145 mViewManager->showDayView(); 3145 mViewManager->showDayView();
3146 mNavigator->slotDaySelect( conflict.date() ); 3146 mNavigator->slotDaySelect( conflict.date() );
3147 int hour = conflict.time().hour(); 3147 int hour = conflict.time().hour();
3148 mViewManager->agendaView()->setStartHour( hour ); 3148 mViewManager->agendaView()->setStartHour( hour );
3149 topLevelWidget()->setCaption( i18n("Conflict %1 <-> %2"). arg( conflictingEvent->summary().left( 20 ) ).arg( cE->summary().left( 20 ) ) ); 3149 topLevelWidget()->setCaption( i18n("Conflict %1 <-> %2"). arg( conflictingEvent->summary().left( 20 ) ).arg( cE->summary().left( 20 ) ) );
3150 } else 3150 } else
3151 topLevelWidget()->setCaption( i18n("No conflict found") ); 3151 topLevelWidget()->setCaption( i18n("No conflict found") );
3152 return; 3152 return;
3153 3153
3154} 3154}
3155 3155
3156void CalendarView::updateTodoViews() 3156void CalendarView::updateTodoViews()
3157{ 3157{
3158 mTodoList->updateView(); 3158 mTodoList->updateView();
3159 mViewManager->currentView()->updateView(); 3159 mViewManager->currentView()->updateView();
3160 3160
3161} 3161}
3162 3162
3163 3163
3164 3164
3165void CalendarView::clearAllViews() 3165void CalendarView::clearAllViews()
3166{ 3166{
3167 mTodoList->clearList(); 3167 mTodoList->clearList();
3168 mViewManager->clearAllViews(); 3168 mViewManager->clearAllViews();
3169 SearchDialog * sd = mDialogManager->getSearchDialog(); 3169 SearchDialog * sd = mDialogManager->getSearchDialog();
3170 if ( sd ) { 3170 if ( sd ) {
3171 KOListView* kol = sd->listview(); 3171 KOListView* kol = sd->listview();
3172 if ( kol ) 3172 if ( kol )
3173 kol->clearList(); 3173 kol->clearList();
3174 } 3174 }
3175} 3175}
3176void CalendarView::updateView() 3176void CalendarView::updateView()
3177{ 3177{
3178 static bool clearallviews = false; 3178 static bool clearallviews = false;
3179 if ( KOPrefs::instance()->mGlobalUpdateDisabled ) { 3179 if ( KOPrefs::instance()->mGlobalUpdateDisabled ) {
3180 if ( clearallviews ) { 3180 if ( clearallviews ) {
3181 clearAllViews(); 3181 clearAllViews();
3182 clearallviews = false; 3182 clearallviews = false;
3183 } 3183 }
3184 return; 3184 return;
3185 } 3185 }
3186 clearallviews = true; 3186 clearallviews = true;
3187 DateList tmpList = mNavigator->selectedDates(); 3187 DateList tmpList = mNavigator->selectedDates();
3188 3188
3189 if ( KOPrefs::instance()->mHideNonStartedTodos ) 3189 if ( KOPrefs::instance()->mHideNonStartedTodos )
3190 mTodoList->updateView(); 3190 mTodoList->updateView();
3191 // We assume that the navigator only selects consecutive days. 3191 // We assume that the navigator only selects consecutive days.
3192 updateView( tmpList.first(), tmpList.last() ); 3192 updateView( tmpList.first(), tmpList.last() );
3193} 3193}
3194 3194
3195void CalendarView::updateUnmanagedViews() 3195void CalendarView::updateUnmanagedViews()
3196{ 3196{
3197 mDateNavigator->updateDayMatrix(); 3197 mDateNavigator->updateDayMatrix();
3198} 3198}
3199 3199
3200int CalendarView::msgItemDelete(const QString name) 3200int CalendarView::msgItemDelete(const QString name)
3201{ 3201{
3202 return KMessageBox::warningContinueCancel(this,name +"\n\n"+ 3202 return KMessageBox::warningContinueCancel(this,name +"\n\n"+
3203 i18n("This item will be\npermanently deleted."), 3203 i18n("This item will be\npermanently deleted."),
3204 i18n("KO/Pi Confirmation"),i18n("Delete")); 3204 i18n("KO/Pi Confirmation"),i18n("Delete"));
3205} 3205}
3206 3206
3207 3207
3208void CalendarView::edit_cut() 3208void CalendarView::edit_cut()
3209{ 3209{
3210 Event *anEvent=0; 3210 Event *anEvent=0;
3211 3211
3212 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 3212 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
3213 3213
3214 if (mViewManager->currentView()->isEventView()) { 3214 if (mViewManager->currentView()->isEventView()) {
3215 if ( incidence && incidence->typeID() == eventID ) { 3215 if ( incidence && incidence->typeID() == eventID ) {
3216 anEvent = static_cast<Event *>(incidence); 3216 anEvent = static_cast<Event *>(incidence);
3217 } 3217 }
3218 } 3218 }
3219 3219
3220 if (!anEvent) { 3220 if (!anEvent) {
3221 KNotifyClient::beep(); 3221 KNotifyClient::beep();
3222 return; 3222 return;
3223 } 3223 }
3224 DndFactory factory( mCalendar ); 3224 DndFactory factory( mCalendar );
3225 factory.cutIncidence(anEvent); 3225 factory.cutIncidence(anEvent);
3226 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 3226 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
3227} 3227}
3228 3228
3229void CalendarView::edit_copy() 3229void CalendarView::edit_copy()
3230{ 3230{
3231 Event *anEvent=0; 3231 Event *anEvent=0;
3232 3232
3233 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 3233 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
3234 3234
3235 if (mViewManager->currentView()->isEventView()) { 3235 if (mViewManager->currentView()->isEventView()) {
3236 if ( incidence && incidence->typeID() == eventID ) { 3236 if ( incidence && incidence->typeID() == eventID ) {
3237 anEvent = static_cast<Event *>(incidence); 3237 anEvent = static_cast<Event *>(incidence);
3238 } 3238 }
3239 } 3239 }
3240 3240
3241 if (!anEvent) { 3241 if (!anEvent) {
3242 KNotifyClient::beep(); 3242 KNotifyClient::beep();
3243 return; 3243 return;
3244 } 3244 }
3245 DndFactory factory( mCalendar ); 3245 DndFactory factory( mCalendar );
3246 factory.copyIncidence(anEvent); 3246 factory.copyIncidence(anEvent);
3247} 3247}
3248 3248
3249void CalendarView::edit_paste() 3249void CalendarView::edit_paste()
3250{ 3250{
3251 QDate date = mNavigator->selectedDates().first(); 3251 QDate date = mNavigator->selectedDates().first();
3252 3252
3253 DndFactory factory( mCalendar ); 3253 DndFactory factory( mCalendar );
3254 Event *pastedEvent = (Event *)factory.pasteIncidence( date ); 3254 Event *pastedEvent = (Event *)factory.pasteIncidence( date );
3255 3255
3256 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED ); 3256 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED );
3257} 3257}
3258void CalendarView::edit_global_options() 3258void CalendarView::edit_global_options()
3259{ 3259{
3260 QString tz = KPimGlobalPrefs::instance()->mTimeZoneId; 3260 QString tz = KPimGlobalPrefs::instance()->mTimeZoneId;
3261 emit save(); 3261 emit save();
3262 emit saveStopTimer(); 3262 emit saveStopTimer();
3263 mDialogManager->showGlobalOptionsDialog(); 3263 mDialogManager->showGlobalOptionsDialog();
3264 if ( tz != KPimGlobalPrefs::instance()->mTimeZoneId) { 3264 if ( tz != KPimGlobalPrefs::instance()->mTimeZoneId) {
3265 emit saveStopTimer(); 3265 emit saveStopTimer();
3266 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, i18n("The timezone has changed!\nShould the calendar be reloaded\nto shift the time of the events?\nPlease read Menu: Help->FAQ:\n\"How do I change the timezone?\"\nas well!"), 3266 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, i18n("The timezone has changed!\nShould the calendar be reloaded\nto shift the time of the events?\nPlease read Menu: Help->FAQ:\n\"How do I change the timezone?\"\nas well!"),
3267 i18n("Timezone settings"),i18n("Reload"))) { 3267 i18n("Timezone settings"),i18n("Reload"))) {
3268 qDebug("KO: TZ reload cancelled "); 3268 qDebug("KO: TZ reload cancelled ");
3269 mCalendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 3269 mCalendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
3270 return; 3270 return;
3271 } 3271 }
3272 qDebug("KO: Timezone change "); 3272 qDebug("KO: Timezone change ");
3273 loadCalendars(); 3273 loadCalendars();
3274 setModified(true); 3274 setModified(true);
3275 } 3275 }
3276 else 3276 else
3277 qDebug("KO: No tz change "); 3277 qDebug("KO: No tz change ");
3278} 3278}
3279void CalendarView::edit_options() 3279void CalendarView::edit_options()
3280{ 3280{
3281 mDialogManager->showOptionsDialog(); 3281 mDialogManager->showOptionsDialog();
3282} 3282}
3283 3283
3284 3284
3285void CalendarView::slotSelectPickerDate( QDate d) 3285void CalendarView::slotSelectPickerDate( QDate d)
3286{ 3286{
3287 mDateFrame->hide(); 3287 mDateFrame->hide();
3288 if ( mDatePickerMode == 1 ) { 3288 if ( mDatePickerMode == 1 ) {
3289 mNavigator->slotDaySelect( d ); 3289 mNavigator->slotDaySelect( d );
3290 } else if ( mDatePickerMode == 2 ) { 3290 } else if ( mDatePickerMode == 2 ) {
3291 if ( mMoveIncidence->typeID() == todoID ) { 3291 if ( mMoveIncidence->typeID() == todoID ) {
3292 Todo * to = (Todo *) mMoveIncidence; 3292 Todo * to = (Todo *) mMoveIncidence;
3293 QTime tim; 3293 QTime tim;
3294 int len = 0; 3294 int len = 0;
3295 if ( to->hasStartDate() && to->hasDueDate() ) 3295 if ( to->hasStartDate() && to->hasDueDate() )
3296 len = to->dtStart().secsTo( to->dtDue()); 3296 len = to->dtStart().secsTo( to->dtDue());
3297 if ( to->hasDueDate() ) 3297 if ( to->hasDueDate() )
3298 tim = to->dtDue().time(); 3298 tim = to->dtDue().time();
3299 else { 3299 else {
3300 tim = QTime ( 0,0,0 ); 3300 tim = QTime ( 0,0,0 );
3301 to->setFloats( true ); 3301 to->setFloats( true );
3302 to->setHasDueDate( true ); 3302 to->setHasDueDate( true );
3303 } 3303 }
3304 QDateTime dt ( d,tim ); 3304 QDateTime dt ( d,tim );
3305 to->setDtDue( dt ); 3305 to->setDtDue( dt );
3306 3306
3307 if ( to->hasStartDate() ) { 3307 if ( to->hasStartDate() ) {
3308 if ( len>0 ) 3308 if ( len>0 )
3309 to->setDtStart(to->dtDue().addSecs( -len )); 3309 to->setDtStart(to->dtDue().addSecs( -len ));
3310 else 3310 else
3311 if (to->dtStart() > to->dtDue() ) 3311 if (to->dtStart() > to->dtDue() )
3312 to->setDtStart(to->dtDue().addDays( -3 )); 3312 to->setDtStart(to->dtDue().addDays( -3 ));
3313 } 3313 }
3314 3314
3315 todoChanged( to ); 3315 todoChanged( to );
3316 } else if ( mMoveIncidence->typeID() == eventID ) { 3316 } else if ( mMoveIncidence->typeID() == eventID ) {
3317 if ( mMoveIncidence->doesRecur() ) { 3317 if ( mMoveIncidence->doesRecur() ) {
3318#if 0 3318#if 0
3319 // PENDING implement this 3319 // PENDING implement this
3320 Incidence* newInc = mMoveIncidence->recreateCloneException( mMoveIncidenceOldDate ); 3320 Incidence* newInc = mMoveIncidence->recreateCloneException( mMoveIncidenceOldDate );
3321 mCalendar()->addIncidence( newInc ); 3321 mCalendar()->addIncidence( newInc );
3322 if ( mMoveIncidence->typeID() == todoID ) 3322 if ( mMoveIncidence->typeID() == todoID )
3323 emit todoMoved((Todo*)mMoveIncidence, KOGlobals::EVENTEDITED ); 3323 emit todoMoved((Todo*)mMoveIncidence, KOGlobals::EVENTEDITED );
3324 else 3324 else
3325 emit incidenceChanged(mMoveIncidence, KOGlobals::EVENTEDITED); 3325 emit incidenceChanged(mMoveIncidence, KOGlobals::EVENTEDITED);
3326 mMoveIncidence = newInc; 3326 mMoveIncidence = newInc;
3327 3327
3328#endif 3328#endif
3329 } 3329 }
3330 QTime tim = mMoveIncidence->dtStart().time(); 3330 QTime tim = mMoveIncidence->dtStart().time();
3331 int secs = mMoveIncidence->dtStart().secsTo( mMoveIncidence->dtEnd()); 3331 int secs = mMoveIncidence->dtStart().secsTo( mMoveIncidence->dtEnd());
3332 QDateTime dt ( d,tim ); 3332 QDateTime dt ( d,tim );
3333 mMoveIncidence->setDtStart( dt ); 3333 mMoveIncidence->setDtStart( dt );
3334 ((Event*)mMoveIncidence)->setDtEnd( dt.addSecs( secs ) ); 3334 ((Event*)mMoveIncidence)->setDtEnd( dt.addSecs( secs ) );
3335 changeEventDisplay((Event*)mMoveIncidence, KOGlobals::EVENTEDITED); 3335 changeEventDisplay((Event*)mMoveIncidence, KOGlobals::EVENTEDITED);
3336 } else if ( mMoveIncidence->typeID() == journalID ) { 3336 } else if ( mMoveIncidence->typeID() == journalID ) {
3337 QTime tim = mMoveIncidence->dtStart().time(); 3337 QTime tim = mMoveIncidence->dtStart().time();
3338 QDateTime dt ( d,tim ); 3338 QDateTime dt ( d,tim );
3339 mMoveIncidence->setDtStart( dt ); 3339 mMoveIncidence->setDtStart( dt );
3340 updateView(); 3340 updateView();
3341 } 3341 }
3342 mMoveIncidence->setRevision( mMoveIncidence->revision()+1 ); 3342 mMoveIncidence->setRevision( mMoveIncidence->revision()+1 );
3343 } 3343 }
3344} 3344}
3345 3345
3346void CalendarView::removeCategories() 3346void CalendarView::removeCategories()
3347{ 3347{
3348 QPtrList<Incidence> incList = mCalendar->rawIncidences(); 3348 QPtrList<Incidence> incList = mCalendar->rawIncidences();
3349 QStringList catList = KOPrefs::instance()->mCustomCategories; 3349 QStringList catList = KOPrefs::instance()->mCustomCategories;
3350 QStringList catIncList; 3350 QStringList catIncList;
3351 QStringList newCatList; 3351 QStringList newCatList;
3352 Incidence* inc = incList.first(); 3352 Incidence* inc = incList.first();
3353 uint i; 3353 uint i;
3354 while ( inc ) { 3354 while ( inc ) {
3355 newCatList.clear(); 3355 newCatList.clear();
3356 catIncList = inc->categories() ; 3356 catIncList = inc->categories() ;
3357 for( i = 0; i< catIncList.count(); ++i ) { 3357 for( i = 0; i< catIncList.count(); ++i ) {
3358 if ( catList.contains (catIncList[i])) 3358 if ( catList.contains (catIncList[i]))
3359 newCatList.append( catIncList[i] ); 3359 newCatList.append( catIncList[i] );
3360 } 3360 }
3361 newCatList.sort(); 3361 newCatList.sort();
3362 inc->setCategories( newCatList.join(",") ); 3362 inc->setCategories( newCatList.join(",") );
3363 inc = incList.next(); 3363 inc = incList.next();
3364 } 3364 }
3365} 3365}
3366 3366
3367int CalendarView::addCategories() 3367int CalendarView::addCategories()
3368{ 3368{
3369 QPtrList<Incidence> incList = mCalendar->rawIncidences(); 3369 QPtrList<Incidence> incList = mCalendar->rawIncidences();
3370 QStringList catList = KOPrefs::instance()->mCustomCategories; 3370 QStringList catList = KOPrefs::instance()->mCustomCategories;
3371 QStringList catIncList; 3371 QStringList catIncList;
3372 Incidence* inc = incList.first(); 3372 Incidence* inc = incList.first();
3373 uint i; 3373 uint i;
3374 int count = 0; 3374 int count = 0;
3375 while ( inc ) { 3375 while ( inc ) {
3376 catIncList = inc->categories() ; 3376 catIncList = inc->categories() ;
3377 for( i = 0; i< catIncList.count(); ++i ) { 3377 for( i = 0; i< catIncList.count(); ++i ) {
3378 if ( !catList.contains (catIncList[i])) { 3378 if ( !catList.contains (catIncList[i])) {
3379 catList.append( catIncList[i] ); 3379 catList.append( catIncList[i] );
3380 //qDebug("add cat %s ", catIncList[i].latin1()); 3380 //qDebug("add cat %s ", catIncList[i].latin1());
3381 ++count; 3381 ++count;
3382 } 3382 }
3383 } 3383 }
3384 inc = incList.next(); 3384 inc = incList.next();
3385 } 3385 }
3386 catList.sort(); 3386 catList.sort();
3387 KOPrefs::instance()->mCustomCategories = catList; 3387 KOPrefs::instance()->mCustomCategories = catList;
3388 return count; 3388 return count;
3389} 3389}
3390 3390
3391void CalendarView::editCategories() 3391void CalendarView::editCategories()
3392{ 3392{
3393 qDebug("CalendarView::editCategories() "); 3393 qDebug("CalendarView::editCategories() ");
3394 KPIM::CategoryEditDialog ced (KOPrefs::instance(),this ); 3394 KPIM::CategoryEditDialog ced (KOPrefs::instance(),this );
3395 ced.exec(); 3395 ced.exec();
3396} 3396}
3397void CalendarView::manageCategories() 3397void CalendarView::manageCategories()
3398{ 3398{
3399 KOCatPrefs* cp = new KOCatPrefs(); 3399 KOCatPrefs* cp = new KOCatPrefs();
3400 cp->show(); 3400 cp->show();
3401 int w =cp->sizeHint().width() ; 3401 int w =cp->sizeHint().width() ;
3402 int h = cp->sizeHint().height() ; 3402 int h = cp->sizeHint().height() ;
3403 int dw = QApplication::desktop()->width(); 3403 int dw = QApplication::desktop()->width();
3404 int dh = QApplication::desktop()->height(); 3404 int dh = QApplication::desktop()->height();
3405 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 3405 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
3406 if ( !cp->exec() ) { 3406 if ( !cp->exec() ) {
3407 delete cp; 3407 delete cp;
3408 return; 3408 return;
3409 } 3409 }
3410 int count = 0; 3410 int count = 0;
3411 if ( cp->addCat() ) { 3411 if ( cp->addCat() ) {
3412 count = addCategories(); 3412 count = addCategories();
3413 if ( count ) { 3413 if ( count ) {
3414 topLevelWidget()->setCaption(QString::number( count )+ i18n(" Categories added to list! ")); 3414 topLevelWidget()->setCaption(QString::number( count )+ i18n(" Categories added to list! "));
3415 writeSettings(); 3415 writeSettings();
3416 } else 3416 } else
3417 topLevelWidget()->setCaption(QString::number( 0 )+ i18n(" Categories added to list! ")); 3417 topLevelWidget()->setCaption(QString::number( 0 )+ i18n(" Categories added to list! "));
3418 } else { 3418 } else {
3419 removeCategories(); 3419 removeCategories();
3420 updateView(); 3420 updateView();
3421 } 3421 }
3422 delete cp; 3422 delete cp;
3423} 3423}
3424 3424
3425void CalendarView::beamIncidence(Incidence * Inc) 3425void CalendarView::beamIncidence(Incidence * Inc)
3426{ 3426{
3427 QPtrList<Incidence> delSel ; 3427 QPtrList<Incidence> delSel ;
3428 delSel.append(Inc); 3428 delSel.append(Inc);
3429 beamIncidenceList( delSel ); 3429 beamIncidenceList( delSel );
3430} 3430}
3431void CalendarView::beamCalendar() 3431void CalendarView::beamCalendar()
3432{ 3432{
3433 QPtrList<Incidence> delSel = mCalendar->rawIncidences(); 3433 QPtrList<Incidence> delSel = mCalendar->rawIncidences();
3434 //qDebug("beamCalendar() "); 3434 //qDebug("beamCalendar() ");
3435 beamIncidenceList( delSel ); 3435 beamIncidenceList( delSel );
3436} 3436}
3437void CalendarView::beamFilteredCalendar() 3437void CalendarView::beamFilteredCalendar()
3438{ 3438{
3439 QPtrList<Incidence> delSel = mCalendar->incidences(); 3439 QPtrList<Incidence> delSel = mCalendar->incidences();
3440 //qDebug("beamFilteredCalendar() "); 3440 //qDebug("beamFilteredCalendar() ");
3441 beamIncidenceList( delSel ); 3441 beamIncidenceList( delSel );
3442} 3442}
3443void CalendarView::beamIncidenceList(QPtrList<Incidence> delSel ) 3443void CalendarView::beamIncidenceList(QPtrList<Incidence> delSel )
3444{ 3444{
3445 3445
3446 KOBeamPrefs beamDialog; 3446 KOBeamPrefs beamDialog;
3447 if ( beamDialog.exec () == QDialog::Rejected ) 3447 if ( beamDialog.exec () == QDialog::Rejected )
3448 return; 3448 return;
3449#ifdef DESKTOP_VERSION 3449#ifdef DESKTOP_VERSION
3450 QString fn = locateLocal( "tmp", "kopibeamfile" ); 3450 QString fn = locateLocal( "tmp", "kopibeamfile" );
3451#else 3451#else
3452 QString fn = "/tmp/kopibeamfile"; 3452 QString fn = "/tmp/kopibeamfile";
3453#endif 3453#endif
3454 QString mes; 3454 QString mes;
3455 bool createbup = true; 3455 bool createbup = true;
3456 if ( createbup ) { 3456 if ( createbup ) {
3457 QString description = "\n"; 3457 QString description = "\n";
3458 CalendarLocal* cal = new CalendarLocal(); 3458 CalendarLocal* cal = new CalendarLocal();
3459 if ( beamDialog.beamLocal() ) 3459 if ( beamDialog.beamLocal() )
3460 cal->setLocalTime(); 3460 cal->setLocalTime();
3461 else 3461 else
3462 cal->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 3462 cal->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
3463 Incidence *incidence = delSel.first(); 3463 Incidence *incidence = delSel.first();
3464 bool addText = false; 3464 bool addText = false;
3465 if ( delSel.count() < 10 ) 3465 if ( delSel.count() < 10 )
3466 addText = true; 3466 addText = true;
3467 else { 3467 else {
3468 description.sprintf(i18n(" %d items?"),delSel.count() ); 3468 description.sprintf(i18n(" %d items?"),delSel.count() );
3469 } 3469 }
3470 while ( incidence ) { 3470 while ( incidence ) {
3471 Incidence *in = incidence->clone(); 3471 Incidence *in = incidence->clone();
3472 if ( ! in->summary().isEmpty() ) { 3472 if ( ! in->summary().isEmpty() ) {
3473 in->setDescription(""); 3473 in->setDescription("");
3474 } else { 3474 } else {
3475 in->setSummary( in->description().left(20)); 3475 in->setSummary( in->description().left(20));
3476 in->setDescription(""); 3476 in->setDescription("");
3477 } 3477 }
3478 if ( addText ) 3478 if ( addText )
3479 description += in->summary() + "\n"; 3479 description += in->summary() + "\n";
3480 cal->addIncidence( in ); 3480 cal->addIncidence( in );
3481 incidence = delSel.next(); 3481 incidence = delSel.next();
3482 } 3482 }
3483 if ( beamDialog.beamVcal() ) { 3483 if ( beamDialog.beamVcal() ) {
3484 fn += ".vcs"; 3484 fn += ".vcs";
3485 FileStorage storage( cal, fn, new VCalFormat ); 3485 FileStorage storage( cal, fn, new VCalFormat );
3486 storage.save(); 3486 storage.save();
3487 } else { 3487 } else {
3488 fn += ".ics"; 3488 fn += ".ics";
3489 FileStorage storage( cal, fn, new ICalFormat( ) ); 3489 FileStorage storage( cal, fn, new ICalFormat( ) );
3490 storage.save(); 3490 storage.save();
3491 } 3491 }
3492 delete cal; 3492 delete cal;
3493 mes = i18n("KO/Pi: Ready for beaming"); 3493 mes = i18n("KO/Pi: Ready for beaming");
3494 topLevelWidget()->setCaption(mes); 3494 topLevelWidget()->setCaption(mes);
3495 KApplication::convert2latin1( fn ); 3495 KApplication::convert2latin1( fn );
3496#ifndef DESKTOP_VERSION 3496#ifndef DESKTOP_VERSION
3497 Ir *ir = new Ir( this ); 3497 Ir *ir = new Ir( this );
3498 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) ); 3498 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) );
3499 ir->send( fn, description, "text/x-vCalendar" ); 3499 ir->send( fn, description, "text/x-vCalendar" );
3500#endif 3500#endif
3501 } 3501 }
3502} 3502}
3503 3503
3504#ifndef DESKTOP_VERSION 3504#ifndef DESKTOP_VERSION
3505void CalendarView::beamDone( Ir *ir ) 3505void CalendarView::beamDone( Ir *ir )
3506{ 3506{
3507 delete ir; 3507 delete ir;
3508 topLevelWidget()->setCaption( i18n("KO/Pi: Beaming done.") ); 3508 topLevelWidget()->setCaption( i18n("KO/Pi: Beaming done.") );
3509 topLevelWidget()->raise(); 3509 topLevelWidget()->raise();
3510} 3510}
3511#else 3511#else
3512void CalendarView::beamDone( Ir *){;} 3512void CalendarView::beamDone( Ir *){;}
3513#endif 3513#endif
3514void CalendarView::moveIncidence(Incidence * inc ) 3514void CalendarView::moveIncidence(Incidence * inc )
3515{ 3515{
3516 if ( !inc ) return; 3516 if ( !inc ) return;
3517 showDatePickerPopup(); 3517 showDatePickerPopup();
3518 mDatePickerMode = 2; 3518 mDatePickerMode = 2;
3519 mMoveIncidence = inc ; 3519 mMoveIncidence = inc ;
3520 QDate da; 3520 QDate da;
3521 if ( mMoveIncidence->typeID() == todoID ) { 3521 if ( mMoveIncidence->typeID() == todoID ) {
3522 Todo * to = (Todo *) mMoveIncidence; 3522 Todo * to = (Todo *) mMoveIncidence;
3523 if ( to->hasDueDate() ) 3523 if ( to->hasDueDate() )
3524 da = to->dtDue().date(); 3524 da = to->dtDue().date();
3525 else 3525 else
3526 da = QDate::currentDate(); 3526 da = QDate::currentDate();
3527 } else { 3527 } else {
3528 da = mMoveIncidence->dtStart().date(); 3528 da = mMoveIncidence->dtStart().date();
3529 } 3529 }
3530 //PENDING set date for recurring incidence to date of recurrence 3530 //PENDING set date for recurring incidence to date of recurrence
3531 //mMoveIncidenceOldDate; 3531 //mMoveIncidenceOldDate;
3532 mDatePicker->setDate( da ); 3532 mDatePicker->setDate( da );
3533} 3533}
3534void CalendarView::showDatePickerPopup() 3534void CalendarView::showDatePickerPopup()
3535{ 3535{
3536 if ( mDateFrame->isVisible() ) 3536 if ( mDateFrame->isVisible() )
3537 mDateFrame->hide(); 3537 mDateFrame->hide();
3538 else { 3538 else {
3539 int offX = 0, offY = 0; 3539 int offX = 0, offY = 0;
3540#ifdef DESKTOP_VERSION 3540#ifdef DESKTOP_VERSION
3541 int w =mDatePicker->sizeHint().width() ; 3541 int w =mDatePicker->sizeHint().width() ;
3542 int h = mDatePicker->sizeHint().height() ; 3542 int h = mDatePicker->sizeHint().height() ;
3543 int dw = topLevelWidget()->width(); 3543 int dw = topLevelWidget()->width();
3544 int dh = topLevelWidget()->height(); 3544 int dh = topLevelWidget()->height();
3545 offX = topLevelWidget()->x(); 3545 offX = topLevelWidget()->x();
3546 offY = topLevelWidget()->y(); 3546 offY = topLevelWidget()->y();
3547#else 3547#else
3548 int w =mDatePicker->sizeHint().width() ; 3548 int w =mDatePicker->sizeHint().width() ;
3549 int h = mDatePicker->sizeHint().height() ; 3549 int h = mDatePicker->sizeHint().height() ;
3550 int dw = QApplication::desktop()->width(); 3550 int dw = QApplication::desktop()->width();
3551 int dh = QApplication::desktop()->height(); 3551 int dh = QApplication::desktop()->height();
3552#endif 3552#endif
3553 mDateFrame->setGeometry( (dw-w)/2+offX, (dh - h )/2+offY ,w,h ); 3553 mDateFrame->setGeometry( (dw-w)/2+offX, (dh - h )/2+offY ,w,h );
3554 mDateFrame->show(); 3554 mDateFrame->show();
3555 } 3555 }
3556} 3556}
3557void CalendarView::showDatePicker( ) 3557void CalendarView::showDatePicker( )
3558{ 3558{
3559 showDatePickerPopup(); 3559 showDatePickerPopup();
3560 mDatePickerMode = 1; 3560 mDatePickerMode = 1;
3561 mDatePicker->setDate( mNavigator->selectedDates().first() ); 3561 mDatePicker->setDate( mNavigator->selectedDates().first() );
3562} 3562}
3563 3563
3564void CalendarView::showEventEditor() 3564void CalendarView::showEventEditor()
3565{ 3565{
3566#ifdef DESKTOP_VERSION 3566#ifdef DESKTOP_VERSION
3567 int x,y,w,h; 3567 int x,y,w,h;
3568 x = mEventEditor->geometry().x(); 3568 x = mEventEditor->geometry().x();
3569 y = mEventEditor->geometry().y(); 3569 y = mEventEditor->geometry().y();
3570 w = mEventEditor->width(); 3570 w = mEventEditor->width();
3571 h = mEventEditor->height(); 3571 h = mEventEditor->height();
3572 mEventEditor->show(); 3572 mEventEditor->show();
3573 mEventEditor->setGeometry(x,y,w,h); 3573 mEventEditor->setGeometry(x,y,w,h);
3574#else 3574#else
3575 if ( mEventEditor->width() < QApplication::desktop()->width() -60 || mEventEditor->width() > QApplication::desktop()->width() ) { 3575 if ( mEventEditor->width() < QApplication::desktop()->width() -60 || mEventEditor->width() > QApplication::desktop()->width() ) {
3576 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") ); 3576 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") );
3577 qDebug("KO: CalendarView: recreate mEventEditor %d %d", mEventEditor->width(), QApplication::desktop()->width() ); 3577 qDebug("KO: CalendarView: recreate mEventEditor %d %d", mEventEditor->width(), QApplication::desktop()->width() );
3578 qApp->processEvents(); 3578 qApp->processEvents();
3579 delete mEventEditor; 3579 delete mEventEditor;
3580 mEventEditor = mDialogManager->getEventEditor(); 3580 mEventEditor = mDialogManager->getEventEditor();
3581 topLevelWidget()->setCaption( i18n("") ); 3581 topLevelWidget()->setCaption( i18n("") );
3582 } 3582 }
3583 mEventEditor->showMaximized(); 3583 mEventEditor->showMaximized();
3584#endif 3584#endif
3585} 3585}
3586void CalendarView::showTodoEditor() 3586void CalendarView::showTodoEditor()
3587{ 3587{
3588#ifdef DESKTOP_VERSION 3588#ifdef DESKTOP_VERSION
3589 int x,y,w,h; 3589 int x,y,w,h;
3590 x = mTodoEditor->geometry().x(); 3590 x = mTodoEditor->geometry().x();
3591 y = mTodoEditor->geometry().y(); 3591 y = mTodoEditor->geometry().y();
3592 w = mTodoEditor->width(); 3592 w = mTodoEditor->width();
3593 h = mTodoEditor->height(); 3593 h = mTodoEditor->height();
3594 mTodoEditor->show(); 3594 mTodoEditor->show();
3595 mTodoEditor->setGeometry(x,y,w,h); 3595 mTodoEditor->setGeometry(x,y,w,h);
3596#else 3596#else
3597 if ( mTodoEditor->width() < QApplication::desktop()->width() -60|| mTodoEditor->width() > QApplication::desktop()->width() ) { 3597 if ( mTodoEditor->width() < QApplication::desktop()->width() -60|| mTodoEditor->width() > QApplication::desktop()->width() ) {
3598 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") ); 3598 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") );
3599 qDebug("KO: CalendarView: recreate mTodoEditor %d %d ", mTodoEditor->width() ,QApplication::desktop()->width() ); 3599 qDebug("KO: CalendarView: recreate mTodoEditor %d %d ", mTodoEditor->width() ,QApplication::desktop()->width() );
3600 qApp->processEvents(); 3600 qApp->processEvents();
3601 delete mTodoEditor; 3601 delete mTodoEditor;
3602 mTodoEditor = mDialogManager->getTodoEditor(); 3602 mTodoEditor = mDialogManager->getTodoEditor();
3603 topLevelWidget()->setCaption( i18n("") ); 3603 topLevelWidget()->setCaption( i18n("") );
3604 } 3604 }
3605 mTodoEditor->showMaximized(); 3605 mTodoEditor->showMaximized();
3606#endif 3606#endif
3607} 3607}
3608 3608
3609void CalendarView::cloneIncidence() 3609void CalendarView::cloneIncidence()
3610{ 3610{
3611 Incidence *incidence = currentSelection(); 3611 Incidence *incidence = currentSelection();
3612 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3612 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3613 if ( incidence ) { 3613 if ( incidence ) {
3614 cloneIncidence(incidence); 3614 cloneIncidence(incidence);
3615 } 3615 }
3616} 3616}
3617void CalendarView::moveIncidence() 3617void CalendarView::moveIncidence()
3618{ 3618{
3619 Incidence *incidence = currentSelection(); 3619 Incidence *incidence = currentSelection();
3620 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3620 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3621 if ( incidence ) { 3621 if ( incidence ) {
3622 moveIncidence(incidence); 3622 moveIncidence(incidence);
3623 } 3623 }
3624} 3624}
3625void CalendarView::beamIncidence() 3625void CalendarView::beamIncidence()
3626{ 3626{
3627 Incidence *incidence = currentSelection(); 3627 Incidence *incidence = currentSelection();
3628 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3628 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3629 if ( incidence ) { 3629 if ( incidence ) {
3630 beamIncidence(incidence); 3630 beamIncidence(incidence);
3631 } 3631 }
3632} 3632}
3633void CalendarView::toggleCancelIncidence() 3633void CalendarView::toggleCancelIncidence()
3634{ 3634{
3635 Incidence *incidence = currentSelection(); 3635 Incidence *incidence = currentSelection();
3636 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3636 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3637 if ( incidence ) { 3637 if ( incidence ) {
3638 cancelIncidence(incidence); 3638 cancelIncidence(incidence);
3639 } 3639 }
3640} 3640}
3641 3641
3642 3642
3643void CalendarView::cancelIncidence(Incidence * inc ) 3643void CalendarView::cancelIncidence(Incidence * inc )
3644{ 3644{
3645 inc->setCancelled( ! inc->cancelled() ); 3645 inc->setCancelled( ! inc->cancelled() );
3646 changeIncidenceDisplay( inc,KOGlobals::EVENTEDITED ); 3646 changeIncidenceDisplay( inc,KOGlobals::EVENTEDITED );
3647 updateView(); 3647 updateView();
3648} 3648}
3649void CalendarView::cloneIncidence(Incidence * orgInc ) 3649void CalendarView::cloneIncidence(Incidence * orgInc )
3650{ 3650{
3651 Incidence * newInc = orgInc->clone(); 3651 Incidence * newInc = orgInc->clone();
3652 newInc->recreate(); 3652 newInc->recreate();
3653 3653
3654 if ( newInc->typeID() == todoID ) { 3654 if ( newInc->typeID() == todoID ) {
3655 Todo* t = (Todo*) newInc; 3655 Todo* t = (Todo*) newInc;
3656 bool cloneSub = false; 3656 bool cloneSub = false;
3657 if ( orgInc->relations().count() ) { 3657 if ( orgInc->relations().count() ) {
3658 int result = KMessageBox::warningYesNoCancel(this, 3658 int result = KMessageBox::warningYesNoCancel(this,
3659 i18n("The todo\n%1\nwill be cloned!\nIt has subtodos!\nDo you want to clone\nall subtodos as well?").arg( KGlobal::formatMessage ( newInc->summary(),0 ) ), 3659 i18n("The todo\n%1\nwill be cloned!\nIt has subtodos!\nDo you want to clone\nall subtodos as well?").arg( KGlobal::formatMessage ( newInc->summary(),0 ) ),
3660 i18n("Todo has subtodos"), 3660 i18n("Todo has subtodos"),
3661 i18n("Yes"), 3661 i18n("Yes"),
3662 i18n("No")); 3662 i18n("No"));
3663 3663
3664 if ( result == KMessageBox::Cancel ) { 3664 if ( result == KMessageBox::Cancel ) {
3665 delete t; 3665 delete t;
3666 return; 3666 return;
3667 } 3667 }
3668 if (result == KMessageBox::Yes) cloneSub = true; 3668 if (result == KMessageBox::Yes) cloneSub = true;
3669 } 3669 }
3670 showTodoEditor(); 3670 showTodoEditor();
3671 mTodoEditor->editTodo( t ); 3671 mTodoEditor->editTodo( t );
3672 if ( mTodoEditor->exec() ) { 3672 if ( mTodoEditor->exec() ) {
3673 if ( cloneSub ) { 3673 if ( cloneSub ) {
3674 orgInc->cloneRelations( t ); 3674 orgInc->cloneRelations( t );
3675 mCalendar->addIncidenceBranch( t ); 3675 mCalendar->addIncidenceBranch( t );
3676 updateView(); 3676 updateView();
3677 3677
3678 } else { 3678 } else {
3679 mCalendar->addTodo( t ); 3679 mCalendar->addTodo( t );
3680 updateView(); 3680 updateView();
3681 } 3681 }
3682 } else { 3682 } else {
3683 delete t; 3683 delete t;
3684 } 3684 }
3685 } 3685 }
3686 else if ( newInc->typeID() == eventID ) { 3686 else if ( newInc->typeID() == eventID ) {
3687 Event* e = (Event*) newInc; 3687 Event* e = (Event*) newInc;
3688 showEventEditor(); 3688 showEventEditor();
3689 mEventEditor->editEvent( e ); 3689 mEventEditor->editEvent( e );
3690 if ( mEventEditor->exec() ) { 3690 if ( mEventEditor->exec() ) {
3691 mCalendar->addEvent( e ); 3691 mCalendar->addEvent( e );
3692 updateView(); 3692 updateView();
3693 } else { 3693 } else {
3694 delete e; 3694 delete e;
3695 } 3695 }
3696 } else if ( newInc->typeID() == journalID ) { 3696 } else if ( newInc->typeID() == journalID ) {
3697 mCalendar->addJournal( (Journal*) newInc ); 3697 mCalendar->addJournal( (Journal*) newInc );
3698 editJournal( (Journal*) newInc ); 3698 editJournal( (Journal*) newInc );
3699 } 3699 }
3700 setActiveWindow(); 3700 setActiveWindow();
3701} 3701}
3702 3702
3703void CalendarView::newEvent() 3703void CalendarView::newEvent()
3704{ 3704{
3705 // TODO: Replace this code by a common eventDurationHint of KOBaseView. 3705 // TODO: Replace this code by a common eventDurationHint of KOBaseView.
3706 KOAgendaView *aView = mViewManager->agendaView(); 3706 KOAgendaView *aView = mViewManager->agendaView();
3707 if (aView) { 3707 if (aView) {
3708 if (aView->selectionStart().isValid()) { 3708 if (aView->selectionStart().isValid()) {
3709 if (aView->selectedIsAllDay()) { 3709 if (aView->selectedIsAllDay()) {
3710 newEvent(aView->selectionStart(),aView->selectionEnd(),true); 3710 newEvent(aView->selectionStart(),aView->selectionEnd(),true);
3711 } else { 3711 } else {
3712 newEvent(aView->selectionStart(),aView->selectionEnd()); 3712 newEvent(aView->selectionStart(),aView->selectionEnd());
3713 } 3713 }
3714 return; 3714 return;
3715 } 3715 }
3716 } 3716 }
3717 3717
3718 QDate date = mNavigator->selectedDates().first(); 3718 QDate date = mNavigator->selectedDates().first();
3719#if 0 3719#if 0
3720 QDateTime current = QDateTime::currentDateTime(); 3720 QDateTime current = QDateTime::currentDateTime();
3721 if ( date <= current.date() ) { 3721 if ( date <= current.date() ) {
3722 int hour = current.time().hour() +1; 3722 int hour = current.time().hour() +1;
3723 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ), 3723 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ),
3724 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 3724 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
3725 } else 3725 } else
3726#endif 3726#endif
3727 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ), 3727 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ),
3728 QDateTime( date, QTime( KOPrefs::instance()->mStartTime + 3728 QDateTime( date, QTime( KOPrefs::instance()->mStartTime +
3729 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 3729 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
3730} 3730}
3731 3731
3732void CalendarView::newEvent(QDateTime fh) 3732void CalendarView::newEvent(QDateTime fh)
3733{ 3733{
3734 newEvent(fh, 3734 newEvent(fh,
3735 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration))); 3735 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration)));
3736} 3736}
3737 3737
3738void CalendarView::newEvent(QDate dt) 3738void CalendarView::newEvent(QDate dt)
3739{ 3739{
3740 newEvent(QDateTime(dt, QTime(0,0,0)), 3740 newEvent(QDateTime(dt, QTime(0,0,0)),
3741 QDateTime(dt, QTime(0,0,0)), true); 3741 QDateTime(dt, QTime(0,0,0)), true);
3742} 3742}
3743void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint) 3743void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint)
3744{ 3744{
3745 newEvent(fromHint, toHint, false); 3745 newEvent(fromHint, toHint, false);
3746} 3746}
3747void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay) 3747void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay)
3748{ 3748{
3749 3749
3750 showEventEditor(); 3750 showEventEditor();
3751 mEventEditor->newEvent(fromHint,toHint,allDay); 3751 mEventEditor->newEvent(fromHint,toHint,allDay);
3752 if ( mFilterView->filtersEnabled() ) { 3752 if ( mFilterView->filtersEnabled() ) {
3753 CalFilter *filter = mFilterView->selectedFilter(); 3753 CalFilter *filter = mFilterView->selectedFilter();
3754 if (filter && filter->showCategories()) { 3754 if (filter && filter->showCategories()) {
3755 mEventEditor->setCategories(filter->categoryList().join(",") ); 3755 mEventEditor->setCategories(filter->categoryList().join(",") );
3756 } 3756 }
3757 if ( filter ) 3757 if ( filter )
3758 mEventEditor->setSecrecy( filter->getSecrecy() ); 3758 mEventEditor->setSecrecy( filter->getSecrecy() );
3759 } 3759 }
3760 mEventEditor->exec(); 3760 mEventEditor->exec();
3761 setActiveWindow(); 3761 setActiveWindow();
3762} 3762}
3763void CalendarView::todoAdded(Todo * t) 3763void CalendarView::todoAdded(Todo * t)
3764{ 3764{
3765 3765
3766 changeTodoDisplay ( t ,KOGlobals::EVENTADDED); 3766 changeTodoDisplay ( t ,KOGlobals::EVENTADDED);
3767 updateTodoViews(); 3767 updateTodoViews();
3768} 3768}
3769void CalendarView::todoChanged(Todo * t) 3769void CalendarView::todoChanged(Todo * t)
3770{ 3770{
3771 emit todoModified( t, 4 ); 3771 emit todoModified( t, 4 );
3772 // updateTodoViews(); 3772 // updateTodoViews();
3773} 3773}
3774void CalendarView::todoToBeDeleted(Todo *) 3774void CalendarView::todoToBeDeleted(Todo *)
3775{ 3775{
3776 //qDebug("todoToBeDeleted(Todo *) "); 3776 //qDebug("todoToBeDeleted(Todo *) ");
3777 updateTodoViews(); 3777 updateTodoViews();
3778} 3778}
3779void CalendarView::todoDeleted() 3779void CalendarView::todoDeleted()
3780{ 3780{
3781 //qDebug(" todoDeleted()"); 3781 //qDebug(" todoDeleted()");
3782 updateTodoViews(); 3782 updateTodoViews();
3783} 3783}
3784 3784
3785 3785
3786void CalendarView::newTodoDateTime( QDateTime dt, bool allday ) 3786void CalendarView::newTodoDateTime( QDateTime dt, bool allday )
3787{ 3787{
3788 showTodoEditor(); 3788 showTodoEditor();
3789 mTodoEditor->newTodo(dt,0,allday); 3789 mTodoEditor->newTodo(dt,0,allday);
3790 if ( mFilterView->filtersEnabled() ) { 3790 if ( mFilterView->filtersEnabled() ) {
3791 CalFilter *filter = mFilterView->selectedFilter(); 3791 CalFilter *filter = mFilterView->selectedFilter();
3792 if (filter && filter->showCategories()) { 3792 if (filter && filter->showCategories()) {
3793 mTodoEditor->setCategories(filter->categoryList().join(",") ); 3793 mTodoEditor->setCategories(filter->categoryList().join(",") );
3794 } 3794 }
3795 if ( filter ) 3795 if ( filter )
3796 mTodoEditor->setSecrecy( filter->getSecrecy() ); 3796 mTodoEditor->setSecrecy( filter->getSecrecy() );
3797 } 3797 }
3798 mTodoEditor->exec(); 3798 mTodoEditor->exec();
3799 setActiveWindow(); 3799 setActiveWindow();
3800} 3800}
3801 3801
3802void CalendarView::newTodo() 3802void CalendarView::newTodo()
3803{ 3803{
3804 newTodoDateTime( QDateTime(),true ); 3804 newTodoDateTime( QDateTime(),true );
3805} 3805}
3806 3806
3807void CalendarView::newSubTodo() 3807void CalendarView::newSubTodo()
3808{ 3808{
3809 Todo *todo = selectedTodo(); 3809 Todo *todo = selectedTodo();
3810 if ( todo ) newSubTodo( todo ); 3810 if ( todo ) newSubTodo( todo );
3811} 3811}
3812 3812
3813void CalendarView::newSubTodo(Todo *parentEvent) 3813void CalendarView::newSubTodo(Todo *parentEvent)
3814{ 3814{
3815 3815
3816 showTodoEditor(); 3816 showTodoEditor();
3817 mTodoEditor->newTodo(QDateTime(),parentEvent,true); 3817 mTodoEditor->newTodo(QDateTime(),parentEvent,true);
3818 mTodoEditor->exec(); 3818 mTodoEditor->exec();
3819 setActiveWindow(); 3819 setActiveWindow();
3820} 3820}
3821 3821
3822void CalendarView::newFloatingEvent() 3822void CalendarView::newFloatingEvent()
3823{ 3823{
3824 DateList tmpList = mNavigator->selectedDates(); 3824 DateList tmpList = mNavigator->selectedDates();
3825 QDate date = tmpList.first(); 3825 QDate date = tmpList.first();
3826 3826
3827 newEvent( QDateTime( date, QTime( 12, 0, 0 ) ), 3827 newEvent( QDateTime( date, QTime( 12, 0, 0 ) ),
3828 QDateTime( date, QTime( 12, 0, 0 ) ), true ); 3828 QDateTime( date, QTime( 12, 0, 0 ) ), true );
3829} 3829}
3830 3830
3831 3831
3832void CalendarView::editEvent( Event *event ) 3832void CalendarView::editEvent( Event *event )
3833{ 3833{
3834 3834
3835 if ( !event ) return; 3835 if ( !event ) return;
3836 if ( event->isReadOnly() ) { 3836 if ( event->isReadOnly() ) {
3837 showEvent( event ); 3837 showEvent( event );
3838 return; 3838 return;
3839 } 3839 }
3840 showEventEditor(); 3840 showEventEditor();
3841 mEventEditor->editEvent( event , mFlagEditDescription); 3841 mEventEditor->editEvent( event , mFlagEditDescription);
3842 mEventEditor->exec(); 3842 mEventEditor->exec();
3843 setActiveWindow(); 3843 setActiveWindow();
3844 3844
3845} 3845}
3846void CalendarView::editJournal( Journal *jour ) 3846void CalendarView::editJournal( Journal *jour )
3847{ 3847{
3848 if ( !jour ) return; 3848 if ( !jour ) return;
3849 mDialogManager->hideSearchDialog(); 3849 mDialogManager->hideSearchDialog();
3850 mViewManager->showJournalView(); 3850 mViewManager->showJournalView();
3851 mNavigator->slotDaySelect( jour->dtStart().date() ); 3851 mNavigator->slotDaySelect( jour->dtStart().date() );
3852} 3852}
3853void CalendarView::editTodo( Todo *todo ) 3853void CalendarView::editTodo( Todo *todo )
3854{ 3854{
3855 if ( !todo ) return; 3855 if ( !todo ) return;
3856 3856
3857 if ( todo->isReadOnly() ) { 3857 if ( todo->isReadOnly() ) {
3858 showTodo( todo ); 3858 showTodo( todo );
3859 return; 3859 return;
3860 } 3860 }
3861 showTodoEditor(); 3861 showTodoEditor();
3862 mTodoEditor->editTodo( todo ,mFlagEditDescription); 3862 mTodoEditor->editTodo( todo ,mFlagEditDescription);
3863 mTodoEditor->exec(); 3863 mTodoEditor->exec();
3864 setActiveWindow(); 3864 setActiveWindow();
3865 3865
3866} 3866}
3867 3867
3868KOEventViewerDialog* CalendarView::getEventViewerDialog() 3868KOEventViewerDialog* CalendarView::getEventViewerDialog()
3869{ 3869{
3870 if ( !mEventViewerDialog ) { 3870 if ( !mEventViewerDialog ) {
3871 mEventViewerDialog = new KOEventViewerDialog(0); 3871 mEventViewerDialog = new KOEventViewerDialog(0);
3872 connect( mEventViewerDialog, SIGNAL( editIncidence( Incidence* )), this, SLOT(editIncidence( Incidence* ) ) ); 3872 connect( mEventViewerDialog, SIGNAL( editIncidence( Incidence* )), this, SLOT(editIncidence( Incidence* ) ) );
3873 connect( this, SIGNAL(configChanged()), mEventViewerDialog, SLOT(updateConfig())); 3873 connect( this, SIGNAL(configChanged()), mEventViewerDialog, SLOT(updateConfig()));
3874 connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)), 3874 connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)),
3875 dateNavigator(), SLOT( selectWeek( const QDate & ) ) ); 3875 dateNavigator(), SLOT( selectWeek( const QDate & ) ) );
3876 connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ), 3876 connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ),
3877 viewManager(), SLOT( showAgendaView( bool ) ) ); 3877 viewManager(), SLOT( showAgendaView( bool ) ) );
3878 connect( mEventViewerDialog, SIGNAL(signalViewerClosed()), 3878 connect( mEventViewerDialog, SIGNAL(signalViewerClosed()),
3879 this, SLOT( slotViewerClosed() ) ); 3879 this, SLOT( slotViewerClosed() ) );
3880 connect( mEventViewerDialog, SIGNAL( todoCompleted(Todo *) ), 3880 connect( mEventViewerDialog, SIGNAL( todoCompleted(Todo *) ),
3881 this, SLOT( todoChanged(Todo *) ) ); 3881 this, SLOT( todoChanged(Todo *) ) );
3882 connect( mEventViewerDialog, SIGNAL( showIncidence( QString ) ),SLOT( showIncidence( QString ) )); 3882 connect( mEventViewerDialog, SIGNAL( showIncidence( QString ) ),SLOT( showIncidence( QString ) ));
3883 mEventViewerDialog->resize( 640, 480 ); 3883 mEventViewerDialog->resize( 640, 480 );
3884 3884
3885 } 3885 }
3886 return mEventViewerDialog; 3886 return mEventViewerDialog;
3887} 3887}
3888void CalendarView::showEvent(Event *event) 3888void CalendarView::showEvent(Event *event)
3889{ 3889{
3890 getEventViewerDialog()->setEvent(event); 3890 getEventViewerDialog()->setEvent(event);
3891 getEventViewerDialog()->showMe(); 3891 getEventViewerDialog()->showMe();
3892} 3892}
3893 3893
3894void CalendarView::showTodo(Todo *event) 3894void CalendarView::showTodo(Todo *event)
3895{ 3895{
3896 getEventViewerDialog()->setTodo(event); 3896 getEventViewerDialog()->setTodo(event);
3897 getEventViewerDialog()->showMe(); 3897 getEventViewerDialog()->showMe();
3898} 3898}
3899void CalendarView::showJournal( Journal *jour ) 3899void CalendarView::showJournal( Journal *jour )
3900{ 3900{
3901 getEventViewerDialog()->setJournal(jour); 3901 getEventViewerDialog()->setJournal(jour);
3902 getEventViewerDialog()->showMe(); 3902 getEventViewerDialog()->showMe();
3903 3903
3904} 3904}
3905// void CalendarView::todoModified (Todo *event, int changed) 3905// void CalendarView::todoModified (Todo *event, int changed)
3906// { 3906// {
3907// // if (mDialogList.find (event) != mDialogList.end ()) { 3907// // if (mDialogList.find (event) != mDialogList.end ()) {
3908// // kdDebug() << "Todo modified and open" << endl; 3908// // kdDebug() << "Todo modified and open" << endl;
3909// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event]; 3909// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event];
3910// // temp->modified (changed); 3910// // temp->modified (changed);
3911 3911
3912// // } 3912// // }
3913 3913
3914// mViewManager->updateView(); 3914// mViewManager->updateView();
3915// } 3915// }
3916 3916
3917void CalendarView::appointment_show() 3917void CalendarView::appointment_show()
3918{ 3918{
3919 Event *anEvent = 0; 3919 Event *anEvent = 0;
3920 3920
3921 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 3921 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
3922 3922
3923 if (mViewManager->currentView()->isEventView()) { 3923 if (mViewManager->currentView()->isEventView()) {
3924 if ( incidence && incidence->typeID() == eventID ) { 3924 if ( incidence && incidence->typeID() == eventID ) {
3925 anEvent = static_cast<Event *>(incidence); 3925 anEvent = static_cast<Event *>(incidence);
3926 } 3926 }
3927 } 3927 }
3928 3928
3929 if (!anEvent) { 3929 if (!anEvent) {
3930 KNotifyClient::beep(); 3930 KNotifyClient::beep();
3931 return; 3931 return;
3932 } 3932 }
3933 3933
3934 showEvent(anEvent); 3934 showEvent(anEvent);
3935} 3935}
3936 3936
3937void CalendarView::appointment_edit() 3937void CalendarView::appointment_edit()
3938{ 3938{
3939 Event *anEvent = 0; 3939 Event *anEvent = 0;
3940 3940
3941 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 3941 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
3942 3942
3943 if (mViewManager->currentView()->isEventView()) { 3943 if (mViewManager->currentView()->isEventView()) {
3944 if ( incidence && incidence->typeID() == eventID ) { 3944 if ( incidence && incidence->typeID() == eventID ) {
3945 anEvent = static_cast<Event *>(incidence); 3945 anEvent = static_cast<Event *>(incidence);
3946 } 3946 }
3947 } 3947 }
3948 3948
3949 if (!anEvent) { 3949 if (!anEvent) {
3950 KNotifyClient::beep(); 3950 KNotifyClient::beep();
3951 return; 3951 return;
3952 } 3952 }
3953 3953
3954 editEvent(anEvent); 3954 editEvent(anEvent);
3955} 3955}
3956 3956
3957void CalendarView::appointment_delete() 3957void CalendarView::appointment_delete()
3958{ 3958{
3959 Event *anEvent = 0; 3959 Event *anEvent = 0;
3960 3960
3961 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 3961 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
3962 3962
3963 if (mViewManager->currentView()->isEventView()) { 3963 if (mViewManager->currentView()->isEventView()) {
3964 if ( incidence && incidence->typeID() == eventID ) { 3964 if ( incidence && incidence->typeID() == eventID ) {
3965 anEvent = static_cast<Event *>(incidence); 3965 anEvent = static_cast<Event *>(incidence);
3966 } 3966 }
3967 } 3967 }
3968 3968
3969 if (!anEvent) { 3969 if (!anEvent) {
3970 KNotifyClient::beep(); 3970 KNotifyClient::beep();
3971 return; 3971 return;
3972 } 3972 }
3973 3973
3974 deleteEvent(anEvent); 3974 deleteEvent(anEvent);
3975} 3975}
3976 3976
3977void CalendarView::todo_resub( Todo * parent, Todo * sub ) 3977void CalendarView::todo_resub( Todo * parent, Todo * sub )
3978{ 3978{
3979 if (!sub) return; 3979 if (!sub) return;
3980 if ( sub->relatedTo() == parent ) 3980 if ( sub->relatedTo() == parent )
3981 return; 3981 return;
3982 sub->setRelatedTo(parent); 3982 sub->setRelatedTo(parent);
3983 sub->updated(); 3983 sub->updated();
3984 setModified(true); 3984 setModified(true);
3985 updateView(); 3985 updateView();
3986} 3986}
3987void CalendarView::todo_unsub(Todo *anTodo ) 3987void CalendarView::todo_unsub(Todo *anTodo )
3988{ 3988{
3989 todo_resub( 0, anTodo ); 3989 todo_resub( 0, anTodo );
3990} 3990}
3991 3991
3992void CalendarView::deleteTodo(Todo *todo) 3992void CalendarView::deleteTodo(Todo *todo)
3993{ 3993{
3994 if (!todo) { 3994 if (!todo) {
3995 KNotifyClient::beep(); 3995 KNotifyClient::beep();
3996 return; 3996 return;
3997 } 3997 }
3998 if (KOPrefs::instance()->mConfirm) { 3998 if (KOPrefs::instance()->mConfirm) {
3999 QString text = KGlobal::formatMessage ( todo->summary(),0 ); 3999 QString text = KGlobal::formatMessage ( todo->summary(),0 );
4000 if (!todo->relations().isEmpty()) { 4000 if (!todo->relations().isEmpty()) {
4001 text += i18n("\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!"); 4001 text += i18n("\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!");
4002 4002
4003 } 4003 }
4004 switch (msgItemDelete(i18n("Todo:") +"\n"+text)) { 4004 switch (msgItemDelete(i18n("Todo:") +"\n"+text)) {
4005 case KMessageBox::Continue: // OK 4005 case KMessageBox::Continue: // OK
4006 bool deleteT = false; 4006 bool deleteT = false;
4007 if (!todo->relations().isEmpty()) { 4007 if (!todo->relations().isEmpty()) {
4008 deleteT = removeCompletedSubTodos( todo ); 4008 deleteT = removeCompletedSubTodos( todo );
4009 } 4009 }
4010 // deleteT == true: todo already deleted in removeCompletedSubTodos 4010 // deleteT == true: todo already deleted in removeCompletedSubTodos
4011 if ( !deleteT ) { 4011 if ( !deleteT ) {
4012 checkExternalId( todo ); 4012 checkExternalId( todo );
4013 calendar()->deleteTodo(todo); 4013 calendar()->deleteTodo(todo);
4014 changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); 4014 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
4015 updateView();
4016 } 4015 }
4016 updateView();
4017 break; 4017 break;
4018 } // switch 4018 } // switch
4019 } else { 4019 } else {
4020 checkExternalId( todo ); 4020 checkExternalId( todo );
4021 mCalendar->deleteTodo(todo); 4021 mCalendar->deleteTodo(todo);
4022 changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); 4022 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
4023 updateView(); 4023 updateView();
4024 } 4024 }
4025 4025
4026 emit updateSearchDialog(); 4026 emit updateSearchDialog();
4027} 4027}
4028void CalendarView::deleteJournal(Journal *jour) 4028void CalendarView::deleteJournal(Journal *jour)
4029{ 4029{
4030 if (!jour) { 4030 if (!jour) {
4031 KNotifyClient::beep(); 4031 KNotifyClient::beep();
4032 return; 4032 return;
4033 } 4033 }
4034 if (KOPrefs::instance()->mConfirm) { 4034 if (KOPrefs::instance()->mConfirm) {
4035 4035
4036 QString des; 4036 QString des;
4037 if ( !jour->summary().isEmpty() ) { 4037 if ( !jour->summary().isEmpty() ) {
4038 des = jour->summary(); 4038 des = jour->summary();
4039 } else { 4039 } else {
4040 des = jour->description().left(30); 4040 des = jour->description().left(30);
4041 des = des.simplifyWhiteSpace (); 4041 des = des.simplifyWhiteSpace ();
4042 des.replace (QRegExp ("\\n"),"" ); 4042 des.replace (QRegExp ("\\n"),"" );
4043 des.replace (QRegExp ("\\r"),"" ); 4043 des.replace (QRegExp ("\\r"),"" );
4044 } 4044 }
4045 switch (msgItemDelete( i18n("Journal:") +"\n"+KGlobal::formatMessage ( des,0 ))) { 4045 switch (msgItemDelete( i18n("Journal:") +"\n"+KGlobal::formatMessage ( des,0 ))) {
4046 case KMessageBox::Continue: // OK 4046 case KMessageBox::Continue: // OK
4047 calendar()->deleteJournal(jour); 4047 calendar()->deleteJournal(jour);
4048 updateView(); 4048 updateView();
4049 break; 4049 break;
4050 } // switch 4050 } // switch
4051 } else { 4051 } else {
4052 calendar()->deleteJournal(jour);; 4052 calendar()->deleteJournal(jour);;
4053 updateView(); 4053 updateView();
4054 } 4054 }
4055 emit updateSearchDialog(); 4055 emit updateSearchDialog();
4056} 4056}
4057 4057
4058void CalendarView::deleteEvent(Event *anEvent) 4058void CalendarView::deleteEvent(Event *anEvent)
4059{ 4059{
4060 if (!anEvent) { 4060 if (!anEvent) {
4061 KNotifyClient::beep(); 4061 KNotifyClient::beep();
4062 return; 4062 return;
4063 } 4063 }
4064 4064
4065 if (anEvent->doesRecur()) { 4065 if (anEvent->doesRecur()) {
4066 QDate itemDate = mViewManager->currentSelectionDate(); 4066 QDate itemDate = mViewManager->currentSelectionDate();
4067 int km; 4067 int km;
4068 if (!itemDate.isValid()) { 4068 if (!itemDate.isValid()) {
4069 //kdDebug() << "Date Not Valid" << endl; 4069 //kdDebug() << "Date Not Valid" << endl;
4070 if (KOPrefs::instance()->mConfirm) { 4070 if (KOPrefs::instance()->mConfirm) {
4071 km = KMessageBox::warningContinueCancel(this,KGlobal::formatMessage ( anEvent->summary(),0 ) + 4071 km = KMessageBox::warningContinueCancel(this,KGlobal::formatMessage ( anEvent->summary(),0 ) +
4072 i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"), 4072 i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"),
4073 i18n("KO/Pi Confirmation"),i18n("Delete All")); 4073 i18n("KO/Pi Confirmation"),i18n("Delete All"));
4074 if ( km == KMessageBox::Continue ) 4074 if ( km == KMessageBox::Continue )
4075 km = KMessageBox::No; // No = all below 4075 km = KMessageBox::No; // No = all below
4076 } else 4076 } else
4077 km = KMessageBox::No; 4077 km = KMessageBox::No;
4078 } else { 4078 } else {
4079 km = KMessageBox::warningYesNoCancel(this,KGlobal::formatMessage ( anEvent->summary(),0 ) + 4079 km = KMessageBox::warningYesNoCancel(this,KGlobal::formatMessage ( anEvent->summary(),0 ) +
4080 i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+ 4080 i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+
4081 KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"), 4081 KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"),
4082 i18n("KO/Pi Confirmation"),i18n("Current"), 4082 i18n("KO/Pi Confirmation"),i18n("Current"),
4083 i18n("All")); 4083 i18n("All"));
4084 } 4084 }
4085 switch(km) { 4085 switch(km) {
4086 4086
4087 case KMessageBox::No: // Continue // all 4087 case KMessageBox::No: // Continue // all
4088 //qDebug("KMessageBox::No "); 4088 //qDebug("KMessageBox::No ");
4089 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 4089 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
4090 schedule(Scheduler::Cancel,anEvent); 4090 schedule(Scheduler::Cancel,anEvent);
4091 4091
4092 checkExternalId( anEvent); 4092 checkExternalId( anEvent);
4093 mCalendar->deleteEvent(anEvent); 4093 mCalendar->deleteEvent(anEvent);
4094 changeEventDisplay(anEvent,KOGlobals::EVENTDELETED); 4094 changeEventDisplay(anEvent,KOGlobals::EVENTDELETED);
4095 break; 4095 break;
4096 4096
4097 // Disabled because it does not work 4097 // Disabled because it does not work
4098 //#if 0 4098 //#if 0
4099 case KMessageBox::Yes: // just this one 4099 case KMessageBox::Yes: // just this one
4100 //QDate qd = mNavigator->selectedDates().first(); 4100 //QDate qd = mNavigator->selectedDates().first();
4101 //if (!qd.isValid()) { 4101 //if (!qd.isValid()) {
4102 // kdDebug() << "no date selected, or invalid date" << endl; 4102 // kdDebug() << "no date selected, or invalid date" << endl;
4103 // KNotifyClient::beep(); 4103 // KNotifyClient::beep();
4104 // return; 4104 // return;
4105 //} 4105 //}
4106 //while (!anEvent->recursOn(qd)) qd = qd.addDays(1); 4106 //while (!anEvent->recursOn(qd)) qd = qd.addDays(1);
4107 if (itemDate!=QDate(1,1,1) || itemDate.isValid()) { 4107 if (itemDate!=QDate(1,1,1) || itemDate.isValid()) {
4108 anEvent->addExDate(itemDate); 4108 anEvent->addExDate(itemDate);
4109 int duration = anEvent->recurrence()->duration(); 4109 int duration = anEvent->recurrence()->duration();
4110 if ( duration > 0 ) { 4110 if ( duration > 0 ) {
4111 anEvent->recurrence()->setDuration( duration - 1 ); 4111 anEvent->recurrence()->setDuration( duration - 1 );
4112 } 4112 }
4113 changeEventDisplay(anEvent, KOGlobals::EVENTEDITED); 4113 changeEventDisplay(anEvent, KOGlobals::EVENTEDITED);
4114 } 4114 }
4115 break; 4115 break;
4116 //#endif 4116 //#endif
4117 } // switch 4117 } // switch
4118 } else { 4118 } else {
4119 if (KOPrefs::instance()->mConfirm) { 4119 if (KOPrefs::instance()->mConfirm) {
4120 switch (KMessageBox::warningContinueCancel(this,KGlobal::formatMessage ( anEvent->summary(),0 ) + 4120 switch (KMessageBox::warningContinueCancel(this,KGlobal::formatMessage ( anEvent->summary(),0 ) +
4121 i18n("\nAre you sure you want\nto delete this event?"), 4121 i18n("\nAre you sure you want\nto delete this event?"),
4122 i18n("KO/Pi Confirmation"),i18n("Delete"))) { 4122 i18n("KO/Pi Confirmation"),i18n("Delete"))) {
4123 case KMessageBox::Continue: // OK 4123 case KMessageBox::Continue: // OK
4124 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 4124 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
4125 schedule(Scheduler::Cancel,anEvent); 4125 schedule(Scheduler::Cancel,anEvent);
4126 checkExternalId( anEvent); 4126 checkExternalId( anEvent);
4127 mCalendar->deleteEvent(anEvent); 4127 mCalendar->deleteEvent(anEvent);
4128 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 4128 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
4129 break; 4129 break;
4130 } // switch 4130 } // switch
4131 } else { 4131 } else {
4132 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 4132 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
4133 schedule(Scheduler::Cancel,anEvent); 4133 schedule(Scheduler::Cancel,anEvent);
4134 checkExternalId( anEvent); 4134 checkExternalId( anEvent);
4135 mCalendar->deleteEvent(anEvent); 4135 mCalendar->deleteEvent(anEvent);
4136 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 4136 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
4137 } 4137 }
4138 } // if-else 4138 } // if-else
4139 emit updateSearchDialog(); 4139 emit updateSearchDialog();
4140} 4140}
4141 4141
4142bool CalendarView::deleteEvent(const QString &uid) 4142bool CalendarView::deleteEvent(const QString &uid)
4143{ 4143{
4144 Event *ev = mCalendar->event(uid); 4144 Event *ev = mCalendar->event(uid);
4145 if (ev) { 4145 if (ev) {
4146 deleteEvent(ev); 4146 deleteEvent(ev);
4147 return true; 4147 return true;
4148 } else { 4148 } else {
4149 return false; 4149 return false;
4150 } 4150 }
4151} 4151}
4152 4152
4153/*****************************************************************************/ 4153/*****************************************************************************/
4154 4154
4155void CalendarView::action_mail() 4155void CalendarView::action_mail()
4156{ 4156{
4157#ifndef KORG_NOMAIL 4157#ifndef KORG_NOMAIL
4158 KOMailClient mailClient; 4158 KOMailClient mailClient;
4159 4159
4160 Incidence *incidence = currentSelection(); 4160 Incidence *incidence = currentSelection();
4161 4161
4162 if (!incidence) { 4162 if (!incidence) {
4163 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected.")); 4163 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected."));
4164 return; 4164 return;
4165 } 4165 }
4166 if(incidence->attendeeCount() == 0 ) { 4166 if(incidence->attendeeCount() == 0 ) {
4167 KMessageBox::sorry(this, 4167 KMessageBox::sorry(this,
4168 i18n("Can't generate mail:\nNo attendees defined.\n")); 4168 i18n("Can't generate mail:\nNo attendees defined.\n"));
4169 return; 4169 return;
4170 } 4170 }
4171 4171
4172 CalendarLocal cal_tmp; 4172 CalendarLocal cal_tmp;
4173 Event *event = 0; 4173 Event *event = 0;
4174 Event *ev = 0; 4174 Event *ev = 0;
4175 if ( incidence && incidence->typeID() == eventID ) { 4175 if ( incidence && incidence->typeID() == eventID ) {
4176 event = static_cast<Event *>(incidence); 4176 event = static_cast<Event *>(incidence);
4177 ev = new Event(*event); 4177 ev = new Event(*event);
4178 cal_tmp.addEvent(ev); 4178 cal_tmp.addEvent(ev);
4179 } 4179 }
4180 ICalFormat mForm(); 4180 ICalFormat mForm();
4181 QString attachment = mForm.toString( &cal_tmp ); 4181 QString attachment = mForm.toString( &cal_tmp );
4182 if (ev) delete(ev); 4182 if (ev) delete(ev);
4183 4183
4184 mailClient.mailAttendees(currentSelection(), attachment); 4184 mailClient.mailAttendees(currentSelection(), attachment);
4185 4185
4186#endif 4186#endif
4187 4187
4188#if 0 4188#if 0
4189 Event *anEvent = 0; 4189 Event *anEvent = 0;
4190 if (mViewManager->currentView()->isEventView()) { 4190 if (mViewManager->currentView()->isEventView()) {
4191 anEvent = dynamic_cast<Event *>((mViewManager->currentView()->selectedIncidences()).first()); 4191 anEvent = dynamic_cast<Event *>((mViewManager->currentView()->selectedIncidences()).first());
4192 } 4192 }
4193 4193
4194 if (!anEvent) { 4194 if (!anEvent) {
4195 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected.")); 4195 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected."));
4196 return; 4196 return;
4197 } 4197 }
4198 if(anEvent->attendeeCount() == 0 ) { 4198 if(anEvent->attendeeCount() == 0 ) {
4199 KMessageBox::sorry(this, 4199 KMessageBox::sorry(this,
4200 i18n("Can't generate mail:\nNo attendees defined.\n")); 4200 i18n("Can't generate mail:\nNo attendees defined.\n"));
4201 return; 4201 return;
4202 } 4202 }
4203 4203
4204 mailobject.emailEvent(anEvent); 4204 mailobject.emailEvent(anEvent);
4205#endif 4205#endif
4206} 4206}
4207 4207
4208 4208
4209void CalendarView::schedule_publish(Incidence *incidence) 4209void CalendarView::schedule_publish(Incidence *incidence)
4210{ 4210{
4211 Event *event = 0; 4211 Event *event = 0;
4212 Todo *todo = 0; 4212 Todo *todo = 0;
4213 4213
4214 if (incidence == 0) { 4214 if (incidence == 0) {
4215 incidence = mViewManager->currentView()->selectedIncidences().first(); 4215 incidence = mViewManager->currentView()->selectedIncidences().first();
4216 if (incidence == 0) { 4216 if (incidence == 0) {
4217 incidence = mTodoList->selectedIncidences().first(); 4217 incidence = mTodoList->selectedIncidences().first();
4218 } 4218 }
4219 } 4219 }
4220 if ( incidence && incidence->typeID() == eventID ) { 4220 if ( incidence && incidence->typeID() == eventID ) {
4221 event = static_cast<Event *>(incidence); 4221 event = static_cast<Event *>(incidence);
4222 } else { 4222 } else {
4223 if ( incidence && incidence->typeID() == todoID ) { 4223 if ( incidence && incidence->typeID() == todoID ) {
4224 todo = static_cast<Todo *>(incidence); 4224 todo = static_cast<Todo *>(incidence);
4225 } 4225 }
4226 } 4226 }
4227 4227
4228 if (!event && !todo) { 4228 if (!event && !todo) {
4229 KMessageBox::sorry(this,i18n("No event selected.")); 4229 KMessageBox::sorry(this,i18n("No event selected."));
4230 return; 4230 return;
4231 } 4231 }
4232 4232
4233 PublishDialog *publishdlg = new PublishDialog(); 4233 PublishDialog *publishdlg = new PublishDialog();
4234 if (incidence->attendeeCount()>0) { 4234 if (incidence->attendeeCount()>0) {
4235 QPtrList<Attendee> attendees = incidence->attendees(); 4235 QPtrList<Attendee> attendees = incidence->attendees();
4236 attendees.first(); 4236 attendees.first();
4237 while ( attendees.current()!=0 ) { 4237 while ( attendees.current()!=0 ) {
4238 publishdlg->addAttendee(attendees.current()); 4238 publishdlg->addAttendee(attendees.current());
4239 attendees.next(); 4239 attendees.next();
4240 } 4240 }
4241 } 4241 }
4242 bool send = true; 4242 bool send = true;
4243 if ( KOPrefs::instance()->mMailClient == KOPrefs::MailClientSendmail ) { 4243 if ( KOPrefs::instance()->mMailClient == KOPrefs::MailClientSendmail ) {
4244 if ( publishdlg->exec() != QDialog::Accepted ) 4244 if ( publishdlg->exec() != QDialog::Accepted )
4245 send = false; 4245 send = false;
4246 } 4246 }
4247 if ( send ) { 4247 if ( send ) {
4248 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 4248 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
4249 if ( event ) { 4249 if ( event ) {
4250 Event *ev = new Event(*event); 4250 Event *ev = new Event(*event);
4251 ev->registerObserver(0); 4251 ev->registerObserver(0);
4252 ev->clearAttendees(); 4252 ev->clearAttendees();
4253 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) { 4253 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) {
4254 delete(ev); 4254 delete(ev);
4255 } 4255 }
4256 } else { 4256 } else {
4257 if ( todo ) { 4257 if ( todo ) {
4258 Todo *ev = new Todo(*todo); 4258 Todo *ev = new Todo(*todo);
4259 ev->registerObserver(0); 4259 ev->registerObserver(0);
4260 ev->clearAttendees(); 4260 ev->clearAttendees();
4261 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) { 4261 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) {
4262 delete(ev); 4262 delete(ev);
4263 } 4263 }
4264 } 4264 }
4265 } 4265 }
4266 } 4266 }
4267 delete publishdlg; 4267 delete publishdlg;
4268} 4268}
4269 4269
4270void CalendarView::schedule_request(Incidence *incidence) 4270void CalendarView::schedule_request(Incidence *incidence)
4271{ 4271{
4272 schedule(Scheduler::Request,incidence); 4272 schedule(Scheduler::Request,incidence);
4273} 4273}
4274 4274
4275void CalendarView::schedule_refresh(Incidence *incidence) 4275void CalendarView::schedule_refresh(Incidence *incidence)
4276{ 4276{
4277 schedule(Scheduler::Refresh,incidence); 4277 schedule(Scheduler::Refresh,incidence);
4278} 4278}
4279 4279
4280void CalendarView::schedule_cancel(Incidence *incidence) 4280void CalendarView::schedule_cancel(Incidence *incidence)
4281{ 4281{
4282 schedule(Scheduler::Cancel,incidence); 4282 schedule(Scheduler::Cancel,incidence);
4283} 4283}
4284 4284
4285void CalendarView::schedule_add(Incidence *incidence) 4285void CalendarView::schedule_add(Incidence *incidence)
4286{ 4286{
4287 schedule(Scheduler::Add,incidence); 4287 schedule(Scheduler::Add,incidence);
4288} 4288}
4289 4289
4290void CalendarView::schedule_reply(Incidence *incidence) 4290void CalendarView::schedule_reply(Incidence *incidence)
4291{ 4291{
4292 schedule(Scheduler::Reply,incidence); 4292 schedule(Scheduler::Reply,incidence);
4293} 4293}
4294 4294
4295void CalendarView::schedule_counter(Incidence *incidence) 4295void CalendarView::schedule_counter(Incidence *incidence)
4296{ 4296{
4297 schedule(Scheduler::Counter,incidence); 4297 schedule(Scheduler::Counter,incidence);
4298} 4298}
4299 4299
4300void CalendarView::schedule_declinecounter(Incidence *incidence) 4300void CalendarView::schedule_declinecounter(Incidence *incidence)
4301{ 4301{
4302 schedule(Scheduler::Declinecounter,incidence); 4302 schedule(Scheduler::Declinecounter,incidence);
4303} 4303}
4304 4304
4305void CalendarView::schedule_publish_freebusy(int daysToPublish) 4305void CalendarView::schedule_publish_freebusy(int daysToPublish)
4306{ 4306{
4307 QDateTime start = QDateTime::currentDateTime(); 4307 QDateTime start = QDateTime::currentDateTime();
4308 QDateTime end = start.addDays(daysToPublish); 4308 QDateTime end = start.addDays(daysToPublish);
4309 4309
4310 FreeBusy *freebusy = new FreeBusy(mCalendar, start, end); 4310 FreeBusy *freebusy = new FreeBusy(mCalendar, start, end);
4311 freebusy->setOrganizer(KOPrefs::instance()->email()); 4311 freebusy->setOrganizer(KOPrefs::instance()->email());
4312 4312
4313 4313
4314 PublishDialog *publishdlg = new PublishDialog(); 4314 PublishDialog *publishdlg = new PublishDialog();
4315 if ( publishdlg->exec() == QDialog::Accepted ) { 4315 if ( publishdlg->exec() == QDialog::Accepted ) {
4316 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 4316 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
4317 if (!dlg->addMessage(freebusy,Scheduler::Publish,publishdlg->addresses())) { 4317 if (!dlg->addMessage(freebusy,Scheduler::Publish,publishdlg->addresses())) {
4318 delete(freebusy); 4318 delete(freebusy);
4319 } 4319 }
4320 } 4320 }
4321 delete publishdlg; 4321 delete publishdlg;
4322} 4322}
4323 4323
4324void CalendarView::schedule(Scheduler::Method method, Incidence *incidence) 4324void CalendarView::schedule(Scheduler::Method method, Incidence *incidence)
4325{ 4325{
4326 Event *event = 0; 4326 Event *event = 0;
4327 Todo *todo = 0; 4327 Todo *todo = 0;
4328 4328
4329 if (incidence == 0) { 4329 if (incidence == 0) {
4330 incidence = mViewManager->currentView()->selectedIncidences().first(); 4330 incidence = mViewManager->currentView()->selectedIncidences().first();
4331 if (incidence == 0) { 4331 if (incidence == 0) {
4332 incidence = mTodoList->selectedIncidences().first(); 4332 incidence = mTodoList->selectedIncidences().first();
4333 } 4333 }
4334 } 4334 }
4335 if ( incidence && incidence->typeID() == eventID ) { 4335 if ( incidence && incidence->typeID() == eventID ) {
4336 event = static_cast<Event *>(incidence); 4336 event = static_cast<Event *>(incidence);
4337 } 4337 }
4338 if ( incidence && incidence->typeID() == todoID ) { 4338 if ( incidence && incidence->typeID() == todoID ) {
4339 todo = static_cast<Todo *>(incidence); 4339 todo = static_cast<Todo *>(incidence);
4340 } 4340 }
4341 4341
4342 if (!event && !todo) { 4342 if (!event && !todo) {
4343 KMessageBox::sorry(this,i18n("No event selected.")); 4343 KMessageBox::sorry(this,i18n("No event selected."));
4344 return; 4344 return;
4345 } 4345 }
4346 4346
4347 if( incidence->attendeeCount() == 0 && method != Scheduler::Publish ) { 4347 if( incidence->attendeeCount() == 0 && method != Scheduler::Publish ) {
4348 KMessageBox::sorry(this,i18n("The event has no attendees.")); 4348 KMessageBox::sorry(this,i18n("The event has no attendees."));
4349 return; 4349 return;
4350 } 4350 }
4351 4351
4352 Event *ev = 0; 4352 Event *ev = 0;
4353 if (event) ev = new Event(*event); 4353 if (event) ev = new Event(*event);
4354 Todo *to = 0; 4354 Todo *to = 0;
4355 if (todo) to = new Todo(*todo); 4355 if (todo) to = new Todo(*todo);
4356 4356
4357 if (method == Scheduler::Reply || method == Scheduler::Refresh) { 4357 if (method == Scheduler::Reply || method == Scheduler::Refresh) {
4358 Attendee *me = incidence->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email()); 4358 Attendee *me = incidence->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email());
4359 if (!me) { 4359 if (!me) {
4360 KMessageBox::sorry(this,i18n("Could not find your attendee entry.\nPlease check the emails.")); 4360 KMessageBox::sorry(this,i18n("Could not find your attendee entry.\nPlease check the emails."));
4361 return; 4361 return;
4362 } 4362 }
4363 if (me->status()==Attendee::NeedsAction && me->RSVP() && method==Scheduler::Reply) { 4363 if (me->status()==Attendee::NeedsAction && me->RSVP() && method==Scheduler::Reply) {
4364 StatusDialog *statdlg = new StatusDialog(this); 4364 StatusDialog *statdlg = new StatusDialog(this);
4365 if (!statdlg->exec()==QDialog::Accepted) return; 4365 if (!statdlg->exec()==QDialog::Accepted) return;
4366 me->setStatus( statdlg->status() ); 4366 me->setStatus( statdlg->status() );
4367 delete(statdlg); 4367 delete(statdlg);
4368 } 4368 }
4369 Attendee *menew = new Attendee(*me); 4369 Attendee *menew = new Attendee(*me);
4370 if (ev) { 4370 if (ev) {
4371 ev->clearAttendees(); 4371 ev->clearAttendees();
4372 ev->addAttendee(menew,false); 4372 ev->addAttendee(menew,false);
4373 } else { 4373 } else {
4374 if (to) { 4374 if (to) {
4375 todo->clearAttendees(); 4375 todo->clearAttendees();
4376 todo->addAttendee(menew,false); 4376 todo->addAttendee(menew,false);
4377 } 4377 }
4378 } 4378 }
4379 } 4379 }
4380 4380
4381 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 4381 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
4382 if (ev) { 4382 if (ev) {
4383 if ( !dlg->addMessage(ev,method) ) delete(ev); 4383 if ( !dlg->addMessage(ev,method) ) delete(ev);
4384 } else { 4384 } else {
4385 if (to) { 4385 if (to) {
4386 if ( !dlg->addMessage(to,method) ) delete(to); 4386 if ( !dlg->addMessage(to,method) ) delete(to);
4387 } 4387 }
4388 } 4388 }
4389} 4389}
4390 4390
4391void CalendarView::openAddressbook() 4391void CalendarView::openAddressbook()
4392{ 4392{
4393 KRun::runCommand("kaddressbook"); 4393 KRun::runCommand("kaddressbook");
4394} 4394}
4395 4395
4396void CalendarView::setModified(bool modified) 4396void CalendarView::setModified(bool modified)
4397{ 4397{
4398 //qDebug("CalendarView::setModified %d ", modified); 4398 //qDebug("CalendarView::setModified %d ", modified);
4399 if ( modified ) 4399 if ( modified )
4400 emit signalmodified(); 4400 emit signalmodified();
4401 mModified = modified; 4401 mModified = modified;
4402 if ( mModified ) 4402 if ( mModified )
4403 emit modifiedChanged(mModified); 4403 emit modifiedChanged(mModified);
4404 4404
4405} 4405}
4406 4406
4407bool CalendarView::isReadOnly() 4407bool CalendarView::isReadOnly()
4408{ 4408{
4409 return mReadOnly; 4409 return mReadOnly;
4410} 4410}
4411 4411
4412void CalendarView::setReadOnly(bool readOnly) 4412void CalendarView::setReadOnly(bool readOnly)
4413{ 4413{
4414 if (mReadOnly != readOnly) { 4414 if (mReadOnly != readOnly) {
4415 mReadOnly = readOnly; 4415 mReadOnly = readOnly;
4416 emit readOnlyChanged(mReadOnly); 4416 emit readOnlyChanged(mReadOnly);
4417 } 4417 }
4418} 4418}
4419 4419
4420bool CalendarView::isModified() 4420bool CalendarView::isModified()
4421{ 4421{
4422 return mModified; 4422 return mModified;
4423} 4423}
4424void CalendarView::slotprintSelInc() 4424void CalendarView::slotprintSelInc()
4425{ 4425{
4426 if ( currentSelection() == 0 ) { 4426 if ( currentSelection() == 0 ) {
4427 KMessageBox::sorry(this,i18n("There is nothing selected!")); 4427 KMessageBox::sorry(this,i18n("There is nothing selected!"));
4428 return; 4428 return;
4429 } 4429 }
4430 showIncidence(); 4430 showIncidence();
4431 getEventViewerDialog()->print(); 4431 getEventViewerDialog()->print();
4432 4432
4433} 4433}
4434void CalendarView::printSetup() 4434void CalendarView::printSetup()
4435{ 4435{
4436#ifndef KORG_NOPRINTER 4436#ifndef KORG_NOPRINTER
4437 createPrinter(); 4437 createPrinter();
4438 4438
4439 mCalPrinter->setupPrinter(); 4439 mCalPrinter->setupPrinter();
4440#endif 4440#endif
4441} 4441}
4442 4442
4443void CalendarView::print() 4443void CalendarView::print()
4444{ 4444{
4445#ifndef KORG_NOPRINTER 4445#ifndef KORG_NOPRINTER
4446 createPrinter(); 4446 createPrinter();
4447 4447
4448 DateList tmpDateList = mNavigator->selectedDates(); 4448 DateList tmpDateList = mNavigator->selectedDates();
4449 mCalPrinter->print(CalPrinter::Month, 4449 mCalPrinter->print(CalPrinter::Month,
4450 tmpDateList.first(), tmpDateList.last()); 4450 tmpDateList.first(), tmpDateList.last());
4451#endif 4451#endif
4452} 4452}
4453 4453
4454void CalendarView::printPreview() 4454void CalendarView::printPreview()
4455{ 4455{
4456#ifndef KORG_NOPRINTER 4456#ifndef KORG_NOPRINTER
4457 kdDebug() << "CalendarView::printPreview()" << endl; 4457 kdDebug() << "CalendarView::printPreview()" << endl;
4458 4458
4459 createPrinter(); 4459 createPrinter();
4460 4460
4461 DateList tmpDateList = mNavigator->selectedDates(); 4461 DateList tmpDateList = mNavigator->selectedDates();
4462 4462
4463 mViewManager->currentView()->printPreview(mCalPrinter,tmpDateList.first(), 4463 mViewManager->currentView()->printPreview(mCalPrinter,tmpDateList.first(),
4464 tmpDateList.last()); 4464 tmpDateList.last());
4465#endif 4465#endif
4466} 4466}
4467bool CalendarView::exportICalendar( QString filename ) 4467bool CalendarView::exportICalendar( QString filename )
4468{ 4468{
4469 // Force correct extension 4469 // Force correct extension
4470 if (filename.right(4) != ".ics") filename += ".ics"; 4470 if (filename.right(4) != ".ics") filename += ".ics";
4471 4471
4472 FileStorage storage( mCalendar, filename, new ICalFormat() ); 4472 FileStorage storage( mCalendar, filename, new ICalFormat() );
4473 return storage.save(); 4473 return storage.save();
4474} 4474}
4475 4475
4476bool CalendarView::exportICalendar() 4476bool CalendarView::exportICalendar()
4477{ 4477{
4478 return exportICalendar( KFileDialog::getSaveFileName("icalout.ics",i18n("*.ics|ICalendars"),this) ); 4478 return exportICalendar( KFileDialog::getSaveFileName("icalout.ics",i18n("*.ics|ICalendars"),this) );
4479} 4479}
4480 4480
4481bool CalendarView::exportVCalendar( QString filename ) 4481bool CalendarView::exportVCalendar( QString filename )
4482{ 4482{
4483 if (mCalendar->journals().count() > 0) { 4483 if (mCalendar->journals().count() > 0) {
4484 int result = KMessageBox::warningContinueCancel(this, 4484 int result = KMessageBox::warningContinueCancel(this,
4485 i18n("The journal entries can not be\nexported to a vCalendar file."), 4485 i18n("The journal entries can not be\nexported to a vCalendar file."),
4486 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"), 4486 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"),
4487 true); 4487 true);
4488 if (result != KMessageBox::Continue) return false; 4488 if (result != KMessageBox::Continue) return false;
4489 } 4489 }
4490 4490
4491 //QString filename = KFileDialog::getSaveFileName("vcalout.vcs",i18n("*.vcs|VCalendars"),this); 4491 //QString filename = KFileDialog::getSaveFileName("vcalout.vcs",i18n("*.vcs|VCalendars"),this);
4492 4492
4493 // Force correct extension 4493 // Force correct extension
4494 if (filename.right(4) != ".vcs") filename += ".vcs"; 4494 if (filename.right(4) != ".vcs") filename += ".vcs";
4495 4495
4496 FileStorage storage( mCalendar, filename, new VCalFormat ); 4496 FileStorage storage( mCalendar, filename, new VCalFormat );
4497 return storage.save(); 4497 return storage.save();
4498 4498
4499} 4499}
4500 4500
4501void CalendarView::eventUpdated(Incidence *) 4501void CalendarView::eventUpdated(Incidence *)
4502{ 4502{
4503 setModified(); 4503 setModified();
4504 // Don't call updateView here. The code, which has caused the update of the 4504 // Don't call updateView here. The code, which has caused the update of the
4505 // event is responsible for updating the view. 4505 // event is responsible for updating the view.
4506 // updateView(); 4506 // updateView();
4507} 4507}
4508 4508
4509void CalendarView::adaptNavigationUnits() 4509void CalendarView::adaptNavigationUnits()
4510{ 4510{
4511 if (mViewManager->currentView()->isEventView()) { 4511 if (mViewManager->currentView()->isEventView()) {
4512 int days = mViewManager->currentView()->currentDateCount(); 4512 int days = mViewManager->currentView()->currentDateCount();
4513 if (days == 1) { 4513 if (days == 1) {
4514 emit changeNavStringPrev(i18n("&Previous Day")); 4514 emit changeNavStringPrev(i18n("&Previous Day"));
4515 emit changeNavStringNext(i18n("&Next Day")); 4515 emit changeNavStringNext(i18n("&Next Day"));
4516 } else { 4516 } else {
4517 emit changeNavStringPrev(i18n("&Previous Week")); 4517 emit changeNavStringPrev(i18n("&Previous Week"));
4518 emit changeNavStringNext(i18n("&Next Week")); 4518 emit changeNavStringNext(i18n("&Next Week"));
4519 } 4519 }
4520 } 4520 }
4521} 4521}
4522 4522
4523void CalendarView::processMainViewSelection( Incidence *incidence ) 4523void CalendarView::processMainViewSelection( Incidence *incidence )
4524{ 4524{
4525 if ( incidence ) mTodoList->clearSelection(); 4525 if ( incidence ) mTodoList->clearSelection();
4526 processIncidenceSelection( incidence ); 4526 processIncidenceSelection( incidence );
4527} 4527}
4528 4528
4529void CalendarView::processTodoListSelection( Incidence *incidence ) 4529void CalendarView::processTodoListSelection( Incidence *incidence )
4530{ 4530{
4531 if ( incidence && mViewManager->currentView() ) { 4531 if ( incidence && mViewManager->currentView() ) {
4532 mViewManager->currentView()->clearSelection(); 4532 mViewManager->currentView()->clearSelection();
4533 } 4533 }
4534 processIncidenceSelection( incidence ); 4534 processIncidenceSelection( incidence );
4535} 4535}
4536 4536
4537void CalendarView::processIncidenceSelection( Incidence *incidence ) 4537void CalendarView::processIncidenceSelection( Incidence *incidence )
4538{ 4538{
4539 emit incidenceSelected( incidence ); 4539 emit incidenceSelected( incidence );
4540 if ( incidence == mSelectedIncidence ) return; 4540 if ( incidence == mSelectedIncidence ) return;
4541 mSelectedIncidence = incidence; 4541 mSelectedIncidence = incidence;
4542 4542
4543 if ( incidence && incidence->typeID() == eventID ) { 4543 if ( incidence && incidence->typeID() == eventID ) {
4544 Event *event = static_cast<Event *>( incidence ); 4544 Event *event = static_cast<Event *>( incidence );
4545 if ( event->organizer() == KOPrefs::instance()->email() ) { 4545 if ( event->organizer() == KOPrefs::instance()->email() ) {
4546 emit organizerEventsSelected( true ); 4546 emit organizerEventsSelected( true );
4547 } else { 4547 } else {
4548 emit organizerEventsSelected(false); 4548 emit organizerEventsSelected(false);
4549 } 4549 }
4550 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails, 4550 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails,
4551 KOPrefs::instance()->email() ) ) { 4551 KOPrefs::instance()->email() ) ) {
4552 emit groupEventsSelected( true ); 4552 emit groupEventsSelected( true );
4553 } else { 4553 } else {
4554 emit groupEventsSelected(false); 4554 emit groupEventsSelected(false);
4555 } 4555 }
4556 return; 4556 return;
4557 } else { 4557 } else {
4558 if ( incidence && incidence->typeID() == todoID ) { 4558 if ( incidence && incidence->typeID() == todoID ) {
4559 emit todoSelected( true ); 4559 emit todoSelected( true );
4560 Todo *event = static_cast<Todo *>( incidence ); 4560 Todo *event = static_cast<Todo *>( incidence );
4561 if ( event->organizer() == KOPrefs::instance()->email() ) { 4561 if ( event->organizer() == KOPrefs::instance()->email() ) {
4562 emit organizerEventsSelected( true ); 4562 emit organizerEventsSelected( true );
4563 } else { 4563 } else {
4564 emit organizerEventsSelected(false); 4564 emit organizerEventsSelected(false);
4565 } 4565 }
4566 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails, 4566 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails,
4567 KOPrefs::instance()->email() ) ) { 4567 KOPrefs::instance()->email() ) ) {
4568 emit groupEventsSelected( true ); 4568 emit groupEventsSelected( true );
4569 } else { 4569 } else {
4570 emit groupEventsSelected(false); 4570 emit groupEventsSelected(false);
4571 } 4571 }
4572 return; 4572 return;
4573 } else { 4573 } else {
4574 emit todoSelected( false ); 4574 emit todoSelected( false );
4575 emit organizerEventsSelected(false); 4575 emit organizerEventsSelected(false);
4576 emit groupEventsSelected(false); 4576 emit groupEventsSelected(false);
4577 } 4577 }
4578 return; 4578 return;
4579 } 4579 }
4580 4580
4581 /* if ( incidence && incidence->typeID() == todoID ) { 4581 /* if ( incidence && incidence->typeID() == todoID ) {
4582 emit todoSelected( true ); 4582 emit todoSelected( true );
4583 } else { 4583 } else {
4584 emit todoSelected( false ); 4584 emit todoSelected( false );
4585 }*/ 4585 }*/
4586} 4586}
4587 4587
4588 4588
4589void CalendarView::checkClipboard() 4589void CalendarView::checkClipboard()
4590{ 4590{
4591#ifndef KORG_NODND 4591#ifndef KORG_NODND
4592 if (ICalDrag::canDecode(QApplication::clipboard()->data())) { 4592 if (ICalDrag::canDecode(QApplication::clipboard()->data())) {
4593 emit pasteEnabled(true); 4593 emit pasteEnabled(true);
4594 } else { 4594 } else {
4595 emit pasteEnabled(false); 4595 emit pasteEnabled(false);
4596 } 4596 }
4597#endif 4597#endif
4598} 4598}
4599 4599
4600void CalendarView::showDates(const DateList &selectedDates) 4600void CalendarView::showDates(const DateList &selectedDates)
4601{ 4601{
4602 // kdDebug() << "CalendarView::selectDates()" << endl; 4602 // kdDebug() << "CalendarView::selectDates()" << endl;
4603 4603
4604 4604
4605 if ( !mBlockShowDates ) { 4605 if ( !mBlockShowDates ) {
4606 if ( mViewManager->currentView() ) { 4606 if ( mViewManager->currentView() ) {
4607 updateView( selectedDates.first(), selectedDates.last() ); 4607 updateView( selectedDates.first(), selectedDates.last() );
4608 } else { 4608 } else {
4609 mViewManager->showAgendaView(); 4609 mViewManager->showAgendaView();
4610 } 4610 }
4611 } 4611 }
4612 4612
4613 QDate date = selectedDates.first(); 4613 QDate date = selectedDates.first();
4614 if ( ! date.isValid() ) { 4614 if ( ! date.isValid() ) {
4615 topLevelWidget()->setCaption(""); 4615 topLevelWidget()->setCaption("");
4616 return; 4616 return;
4617 } 4617 }
4618 4618
4619 QString selDates; 4619 QString selDates;
4620 selDates = KGlobal::locale()->formatDate( date, true); 4620 selDates = KGlobal::locale()->formatDate( date, true);
4621 if (selectedDates.first() < selectedDates.last() ) 4621 if (selectedDates.first() < selectedDates.last() )
4622 selDates += " - " + KGlobal::locale()->formatDate( selectedDates.last(),true); 4622 selDates += " - " + KGlobal::locale()->formatDate( selectedDates.last(),true);
4623 else { 4623 else {
4624 QString addString; 4624 QString addString;
4625 if ( date == QDateTime::currentDateTime().date() ) 4625 if ( date == QDateTime::currentDateTime().date() )
4626 addString = i18n("Today"); 4626 addString = i18n("Today");
4627 else if ( date == QDateTime::currentDateTime().date().addDays(1) ) 4627 else if ( date == QDateTime::currentDateTime().date().addDays(1) )
4628 addString = i18n("Tomorrow"); 4628 addString = i18n("Tomorrow");
4629 else if ( date == QDateTime::currentDateTime().date().addDays(-1) ) 4629 else if ( date == QDateTime::currentDateTime().date().addDays(-1) )
4630 addString = i18n("Yesterday"); 4630 addString = i18n("Yesterday");
4631 else if ( date == QDateTime::currentDateTime().date().addDays(-2) ) 4631 else if ( date == QDateTime::currentDateTime().date().addDays(-2) )
4632 addString = i18n("Day before yesterday"); 4632 addString = i18n("Day before yesterday");
4633 else if ( date == QDateTime::currentDateTime().date().addDays(2) ) 4633 else if ( date == QDateTime::currentDateTime().date().addDays(2) )
4634 addString = i18n("Day after tomorrow"); 4634 addString = i18n("Day after tomorrow");
4635 if ( !addString.isEmpty() ) { 4635 if ( !addString.isEmpty() ) {
4636 topLevelWidget()->setCaption( addString+", " + selDates ); 4636 topLevelWidget()->setCaption( addString+", " + selDates );
4637 return; 4637 return;
4638 } 4638 }
4639 } 4639 }
4640 topLevelWidget()->setCaption( i18n("Dates: ") + selDates ); 4640 topLevelWidget()->setCaption( i18n("Dates: ") + selDates );
4641 4641
4642} 4642}
4643 4643
4644QPtrList<CalFilter> CalendarView::filters() 4644QPtrList<CalFilter> CalendarView::filters()
4645{ 4645{
4646 return mFilters; 4646 return mFilters;
4647 4647
4648} 4648}
4649void CalendarView::editFilters() 4649void CalendarView::editFilters()
4650{ 4650{
4651 // kdDebug() << "CalendarView::editFilters()" << endl; 4651 // kdDebug() << "CalendarView::editFilters()" << endl;
4652 4652
4653 CalFilter *filter = mFilters.first(); 4653 CalFilter *filter = mFilters.first();
4654 while(filter) { 4654 while(filter) {
4655 filter = mFilters.next(); 4655 filter = mFilters.next();
4656 } 4656 }
4657 4657
4658 mDialogManager->showFilterEditDialog(&mFilters); 4658 mDialogManager->showFilterEditDialog(&mFilters);
4659 updateFilter(); 4659 updateFilter();
4660} 4660}
4661void CalendarView::toggleFilter() 4661void CalendarView::toggleFilter()
4662{ 4662{
4663 if ( mLeftFrame->isHidden() ) { 4663 if ( mLeftFrame->isHidden() ) {
4664 toggleExpand(); 4664 toggleExpand();
4665 showFilter( true ); 4665 showFilter( true );
4666 } else 4666 } else
4667 showFilter(! mCalEditView->isVisible()); 4667 showFilter(! mCalEditView->isVisible());
4668} 4668}
4669 4669
4670KOFilterView *CalendarView::filterView() 4670KOFilterView *CalendarView::filterView()
4671{ 4671{
4672 return mFilterView; 4672 return mFilterView;
4673} 4673}
4674void CalendarView::selectFilter( int fil ) 4674void CalendarView::selectFilter( int fil )
4675{ 4675{
4676 mFilterView->setSelectedFilter( fil ); 4676 mFilterView->setSelectedFilter( fil );
4677 updateUnmanagedViews(); 4677 updateUnmanagedViews();
4678} 4678}
4679void CalendarView::showFilter(bool visible) 4679void CalendarView::showFilter(bool visible)
4680{ 4680{
4681#if 1 4681#if 1
4682 if (visible) { 4682 if (visible) {
4683 mCalEditView->readConfig(); 4683 mCalEditView->readConfig();
4684 mCalEditView->show(); 4684 mCalEditView->show();
4685 QValueList<int> sizes; 4685 QValueList<int> sizes;
4686 sizes = mLeftFrame->sizes(); 4686 sizes = mLeftFrame->sizes();
4687 if ( sizes.count() == 4 && sizes[3] < 20 ) { 4687 if ( sizes.count() == 4 && sizes[3] < 20 ) {
4688 sizes.clear(); 4688 sizes.clear();
4689 sizes << 100; 4689 sizes << 100;
4690 sizes << 0; 4690 sizes << 0;
4691 sizes << 0; 4691 sizes << 0;
4692 sizes << 100; 4692 sizes << 100;
4693 mLeftFrame->setSizes(sizes); 4693 mLeftFrame->setSizes(sizes);
4694 } 4694 }
4695#if 0 4695#if 0
4696 sizes = mLeftFrame->sizes(); 4696 sizes = mLeftFrame->sizes();
4697 int ccc = 0; 4697 int ccc = 0;
4698 while ( ccc < sizes.count()) { 4698 while ( ccc < sizes.count()) {
4699 qDebug("size %d %d ", ccc, sizes[ccc]); 4699 qDebug("size %d %d ", ccc, sizes[ccc]);
4700 ++ccc; 4700 ++ccc;
4701 } 4701 }
4702#endif 4702#endif
4703 4703
4704 } 4704 }
4705 else { 4705 else {
4706 mCalEditView->hide(); 4706 mCalEditView->hide();
4707 } 4707 }
4708#else 4708#else
4709 if (visible) mFilterView->show(); 4709 if (visible) mFilterView->show();
4710 else mFilterView->hide(); 4710 else mFilterView->hide();
4711#endif 4711#endif
4712} 4712}
4713void CalendarView::toggleFilerEnabled( ) 4713void CalendarView::toggleFilerEnabled( )
4714{ 4714{
4715 mFilterView->setFiltersEnabled ( !mFilterView->filtersEnabled() ); 4715 mFilterView->setFiltersEnabled ( !mFilterView->filtersEnabled() );
4716 if ( !mFilterView->filtersEnabled() ) 4716 if ( !mFilterView->filtersEnabled() )
4717 topLevelWidget()->setCaption( i18n("Filter disabled ") ); 4717 topLevelWidget()->setCaption( i18n("Filter disabled ") );
4718 updateUnmanagedViews(); 4718 updateUnmanagedViews();
4719 4719
4720} 4720}
4721void CalendarView::updateFilter() 4721void CalendarView::updateFilter()
4722{ 4722{
4723 CalFilter *filter = mFilterView->selectedFilter(); 4723 CalFilter *filter = mFilterView->selectedFilter();
4724 if (filter) { 4724 if (filter) {
4725 QString mess; 4725 QString mess;
4726 if (mFilterView->filtersEnabled()) { 4726 if (mFilterView->filtersEnabled()) {
4727 mess = i18n("Filter selected: ")+filter->name(); 4727 mess = i18n("Filter selected: ")+filter->name();
4728 filter->setEnabled(true); 4728 filter->setEnabled(true);
4729 } 4729 }
4730 else filter->setEnabled(false); 4730 else filter->setEnabled(false);
4731 mCalendar->setFilter(filter); 4731 mCalendar->setFilter(filter);
4732 updateView(); 4732 updateView();
4733 if ( !mess.isEmpty() ) 4733 if ( !mess.isEmpty() )
4734 topLevelWidget()->setCaption( mess ); 4734 topLevelWidget()->setCaption( mess );
4735 4735
4736 } 4736 }
4737 emit filtersUpdated(); 4737 emit filtersUpdated();
4738} 4738}
4739 4739
4740void CalendarView::filterEdited() 4740void CalendarView::filterEdited()
4741{ 4741{
4742 mFilterView->updateFilters(); 4742 mFilterView->updateFilters();
4743 updateFilter(); 4743 updateFilter();
4744 writeSettings(); 4744 writeSettings();
4745} 4745}
4746 4746
4747 4747
4748void CalendarView::takeOverEvent() 4748void CalendarView::takeOverEvent()
4749{ 4749{
4750 Incidence *incidence = currentSelection(); 4750 Incidence *incidence = currentSelection();
4751 4751
4752 if (!incidence) return; 4752 if (!incidence) return;
4753 4753
4754 incidence->setOrganizer(KOPrefs::instance()->email()); 4754 incidence->setOrganizer(KOPrefs::instance()->email());
4755 incidence->recreate(); 4755 incidence->recreate();
4756 incidence->setReadOnly(false); 4756 incidence->setReadOnly(false);
4757 4757
4758 updateView(); 4758 updateView();
4759} 4759}
4760 4760
4761void CalendarView::takeOverCalendar() 4761void CalendarView::takeOverCalendar()
4762{ 4762{
4763 // TODO: Create Calendar::allIncidences() function and use it here 4763 // TODO: Create Calendar::allIncidences() function and use it here
4764 4764
4765 clearAllViews(); 4765 clearAllViews();
4766 QPtrList<Event> events = mCalendar->events(); 4766 QPtrList<Event> events = mCalendar->events();
4767 for(uint i=0; i<events.count(); ++i) { 4767 for(uint i=0; i<events.count(); ++i) {
4768 events.at(i)->setOrganizer(KOPrefs::instance()->email()); 4768 events.at(i)->setOrganizer(KOPrefs::instance()->email());
4769 events.at(i)->recreate(); 4769 events.at(i)->recreate();
4770 events.at(i)->setReadOnly(false); 4770 events.at(i)->setReadOnly(false);
4771 } 4771 }
4772 4772
4773 QPtrList<Todo> todos = mCalendar->todos(); 4773 QPtrList<Todo> todos = mCalendar->todos();
4774 for(uint i=0; i<todos.count(); ++i) { 4774 for(uint i=0; i<todos.count(); ++i) {
4775 todos.at(i)->setOrganizer(KOPrefs::instance()->email()); 4775 todos.at(i)->setOrganizer(KOPrefs::instance()->email());
4776 todos.at(i)->recreate(); 4776 todos.at(i)->recreate();
4777 todos.at(i)->setReadOnly(false); 4777 todos.at(i)->setReadOnly(false);
4778 } 4778 }
4779 4779
4780 QPtrList<Journal> journals = mCalendar->journals(); 4780 QPtrList<Journal> journals = mCalendar->journals();
4781 for(uint i=0; i<journals.count(); ++i) { 4781 for(uint i=0; i<journals.count(); ++i) {
4782 journals.at(i)->setOrganizer(KOPrefs::instance()->email()); 4782 journals.at(i)->setOrganizer(KOPrefs::instance()->email());
4783 journals.at(i)->recreate(); 4783 journals.at(i)->recreate();
4784 journals.at(i)->setReadOnly(false); 4784 journals.at(i)->setReadOnly(false);
4785 } 4785 }
4786 4786
4787 updateView(); 4787 updateView();
4788} 4788}
4789 4789
4790void CalendarView::showIntro() 4790void CalendarView::showIntro()
4791{ 4791{
4792 kdDebug() << "To be implemented." << endl; 4792 kdDebug() << "To be implemented." << endl;
4793} 4793}
4794 4794
4795QWidgetStack *CalendarView::viewStack() 4795QWidgetStack *CalendarView::viewStack()
4796{ 4796{
4797 return mRightFrame; 4797 return mRightFrame;
4798} 4798}
4799 4799
4800QWidget *CalendarView::leftFrame() 4800QWidget *CalendarView::leftFrame()
4801{ 4801{
4802 return ( QWidget *)mLeftFrame; 4802 return ( QWidget *)mLeftFrame;
4803} 4803}
4804 4804
4805DateNavigator *CalendarView::dateNavigator() 4805DateNavigator *CalendarView::dateNavigator()
4806{ 4806{
4807 return mNavigator; 4807 return mNavigator;
4808} 4808}
4809 4809
4810KDateNavigator* CalendarView::dateNavigatorWidget() 4810KDateNavigator* CalendarView::dateNavigatorWidget()
4811{ 4811{
4812 return mDateNavigator->navigatorView(); 4812 return mDateNavigator->navigatorView();
4813} 4813}
4814void CalendarView::toggleDateNavigatorWidget() 4814void CalendarView::toggleDateNavigatorWidget()
4815{ 4815{
4816 KOPrefs::instance()->mShowDateNavigator = !KOPrefs::instance()->mShowDateNavigator ; 4816 KOPrefs::instance()->mShowDateNavigator = !KOPrefs::instance()->mShowDateNavigator ;
4817 4817
4818 if (!KOPrefs::instance()->mShowDateNavigator ) 4818 if (!KOPrefs::instance()->mShowDateNavigator )
4819 mDateNavigator->hide(); 4819 mDateNavigator->hide();
4820 else 4820 else
4821 mDateNavigator->show(); 4821 mDateNavigator->show();
4822} 4822}
4823void CalendarView::addView(KOrg::BaseView *view) 4823void CalendarView::addView(KOrg::BaseView *view)
4824{ 4824{
4825 mViewManager->addView(view); 4825 mViewManager->addView(view);
4826} 4826}
4827 4827
4828void CalendarView::showView(KOrg::BaseView *view) 4828void CalendarView::showView(KOrg::BaseView *view)
4829{ 4829{
4830 mViewManager->showView(view, mLeftFrame->isVisible()); 4830 mViewManager->showView(view, mLeftFrame->isVisible());
4831} 4831}
4832 4832
4833Incidence *CalendarView::currentSelection() 4833Incidence *CalendarView::currentSelection()
4834{ 4834{
4835 return mViewManager->currentSelection(); 4835 return mViewManager->currentSelection();
4836} 4836}
4837void CalendarView::toggleAllDaySize() 4837void CalendarView::toggleAllDaySize()
4838{ 4838{
4839 /* 4839 /*
4840 if ( KOPrefs::instance()->mAllDaySize > 47 ) 4840 if ( KOPrefs::instance()->mAllDaySize > 47 )
4841 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize /2; 4841 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize /2;
4842 else 4842 else
4843 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize *2; 4843 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize *2;
4844 */ 4844 */
4845 viewManager()->agendaView()->toggleAllDay(); 4845 viewManager()->agendaView()->toggleAllDay();
4846} 4846}
4847void CalendarView::toggleExpand() 4847void CalendarView::toggleExpand()
4848{ 4848{
4849 // if ( mLeftFrame->isHidden() ) { 4849 // if ( mLeftFrame->isHidden() ) {
4850 // mLeftFrame->show(); 4850 // mLeftFrame->show();
4851 // emit calendarViewExpanded( false ); 4851 // emit calendarViewExpanded( false );
4852 // } else { 4852 // } else {
4853 // mLeftFrame->hide(); 4853 // mLeftFrame->hide();
4854 // emit calendarViewExpanded( true ); 4854 // emit calendarViewExpanded( true );
4855 // } 4855 // }
4856 //qDebug(" CalendarView::toggleExpand()"); 4856 //qDebug(" CalendarView::toggleExpand()");
4857 globalFlagBlockAgenda = 1; 4857 globalFlagBlockAgenda = 1;
4858 emit calendarViewExpanded( !mLeftFrame->isHidden() ); 4858 emit calendarViewExpanded( !mLeftFrame->isHidden() );
4859 globalFlagBlockAgenda = 5; 4859 globalFlagBlockAgenda = 5;
4860 mViewManager->raiseCurrentView( !mLeftFrame->isHidden() ); 4860 mViewManager->raiseCurrentView( !mLeftFrame->isHidden() );
4861 //mViewManager->showView( 0, true ); 4861 //mViewManager->showView( 0, true );
4862} 4862}
4863 4863
4864void CalendarView::calendarModified( bool modified, Calendar * ) 4864void CalendarView::calendarModified( bool modified, Calendar * )
4865{ 4865{
4866 setModified( modified ); 4866 setModified( modified );
4867} 4867}
4868 4868
4869Todo *CalendarView::selectedTodo() 4869Todo *CalendarView::selectedTodo()
4870{ 4870{
4871 Incidence *incidence = currentSelection(); 4871 Incidence *incidence = currentSelection();
4872 if ( incidence && incidence->typeID() == todoID ) { 4872 if ( incidence && incidence->typeID() == todoID ) {
4873 return static_cast<Todo *>( incidence ); 4873 return static_cast<Todo *>( incidence );
4874 } 4874 }
4875 4875
4876 incidence = mTodoList->selectedIncidences().first(); 4876 incidence = mTodoList->selectedIncidences().first();
4877 if ( incidence && incidence->typeID() == todoID ) { 4877 if ( incidence && incidence->typeID() == todoID ) {
4878 return static_cast<Todo *>( incidence ); 4878 return static_cast<Todo *>( incidence );
4879 } 4879 }
4880 4880
4881 return 0; 4881 return 0;
4882} 4882}
4883 4883
4884void CalendarView::showIncidence() 4884void CalendarView::showIncidence()
4885{ 4885{
4886 mViewerCallerIsSearchDialog = false; 4886 mViewerCallerIsSearchDialog = false;
4887 Incidence *incidence = currentSelection(); 4887 Incidence *incidence = currentSelection();
4888 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 4888 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
4889 if ( incidence ) { 4889 if ( incidence ) {
4890 ShowIncidenceVisitor v; 4890 ShowIncidenceVisitor v;
4891 v.act( incidence, this ); 4891 v.act( incidence, this );
4892 } 4892 }
4893} 4893}
4894void CalendarView::editIncidenceDescription() 4894void CalendarView::editIncidenceDescription()
4895{ 4895{
4896 mFlagEditDescription = true; 4896 mFlagEditDescription = true;
4897 editIncidence(); 4897 editIncidence();
4898 mFlagEditDescription = false; 4898 mFlagEditDescription = false;
4899} 4899}
4900void CalendarView::editIncidence() 4900void CalendarView::editIncidence()
4901{ 4901{
4902 // qDebug("editIncidence() "); 4902 // qDebug("editIncidence() ");
4903 Incidence *incidence = currentSelection(); 4903 Incidence *incidence = currentSelection();
4904 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 4904 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
4905 if ( incidence ) { 4905 if ( incidence ) {
4906 EditIncidenceVisitor v; 4906 EditIncidenceVisitor v;
4907 v.act( incidence, this ); 4907 v.act( incidence, this );
4908 } 4908 }
4909} 4909}
4910 4910
4911void CalendarView::deleteIncidence() 4911void CalendarView::deleteIncidence()
4912{ 4912{
4913 Incidence *incidence = currentSelection(); 4913 Incidence *incidence = currentSelection();
4914 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 4914 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
4915 if ( incidence ) { 4915 if ( incidence ) {
4916 deleteIncidence(incidence); 4916 deleteIncidence(incidence);
4917 } 4917 }
4918} 4918}
4919void CalendarView::showIncidence(QString uid) 4919void CalendarView::showIncidence(QString uid)
4920{ 4920{
4921 Incidence *inc = mCalendar->incidence( uid ); 4921 Incidence *inc = mCalendar->incidence( uid );
4922 if ( inc ) 4922 if ( inc )
4923 showIncidence( inc ); 4923 showIncidence( inc );
4924} 4924}
4925void CalendarView::showIncidence(Incidence *incidence) 4925void CalendarView::showIncidence(Incidence *incidence)
4926{ 4926{
4927 mViewerCallerIsSearchDialog = false; 4927 mViewerCallerIsSearchDialog = false;
4928 //qDebug("%x %x ",sender (), mDialogManager->getSearchDialog() ); 4928 //qDebug("%x %x ",sender (), mDialogManager->getSearchDialog() );
4929 if ( sender() && mDialogManager->getSearchDialog() ) { 4929 if ( sender() && mDialogManager->getSearchDialog() ) {
4930 if ( sender () == mDialogManager->getSearchDialog()->listview() ) { 4930 if ( sender () == mDialogManager->getSearchDialog()->listview() ) {
4931 mViewerCallerIsSearchDialog = true; 4931 mViewerCallerIsSearchDialog = true;
4932 } 4932 }
4933 } 4933 }
4934 if ( incidence ) { 4934 if ( incidence ) {
4935 ShowIncidenceVisitor v; 4935 ShowIncidenceVisitor v;
4936 v.act( incidence, this ); 4936 v.act( incidence, this );
4937 } 4937 }
4938} 4938}
4939 4939
4940void CalendarView::editIncidence(Incidence *incidence) 4940void CalendarView::editIncidence(Incidence *incidence)
4941{ 4941{
4942 if ( incidence ) { 4942 if ( incidence ) {
4943 4943
4944 EditIncidenceVisitor v; 4944 EditIncidenceVisitor v;
4945 v.act( incidence, this ); 4945 v.act( incidence, this );
4946 4946
4947 } 4947 }
4948} 4948}
4949 4949
4950void CalendarView::deleteIncidence(Incidence *incidence) 4950void CalendarView::deleteIncidence(Incidence *incidence)
4951{ 4951{
4952 //qDebug(" CalendarView::deleteIncidence "); 4952 //qDebug(" CalendarView::deleteIncidence ");
4953 if ( incidence == 0 ) { 4953 if ( incidence == 0 ) {
4954 updateView(); 4954 updateView();
4955 emit updateSearchDialog(); 4955 emit updateSearchDialog();
4956 return; 4956 return;
4957 } 4957 }
4958 if ( incidence ) { 4958 if ( incidence ) {
4959 DeleteIncidenceVisitor v; 4959 DeleteIncidenceVisitor v;
4960 v.act( incidence, this ); 4960 v.act( incidence, this );
4961 } 4961 }
4962} 4962}
4963 4963
4964 4964
4965void CalendarView::lookForOutgoingMessages() 4965void CalendarView::lookForOutgoingMessages()
4966{ 4966{
4967 OutgoingDialog *ogd = mDialogManager->outgoingDialog(); 4967 OutgoingDialog *ogd = mDialogManager->outgoingDialog();
4968 ogd->loadMessages(); 4968 ogd->loadMessages();
4969} 4969}
4970 4970
4971void CalendarView::lookForIncomingMessages() 4971void CalendarView::lookForIncomingMessages()
4972{ 4972{
4973 IncomingDialog *icd = mDialogManager->incomingDialog(); 4973 IncomingDialog *icd = mDialogManager->incomingDialog();
4974 icd->retrieve(); 4974 icd->retrieve();
4975} 4975}
4976 4976
4977bool CalendarView::removeCompletedSubTodos( Todo* t ) 4977bool CalendarView::removeCompletedSubTodos( Todo* t )
4978{ 4978{
4979 bool deleteTodo = true; 4979 bool deleteTodo = true;
4980 QPtrList<Incidence> subTodos; 4980 QPtrList<Incidence> subTodos;
4981 Incidence *aTodo; 4981 Incidence *aTodo;
4982 subTodos = t->relations(); 4982 subTodos = t->relations();
4983 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) { 4983 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) {
4984 if (! removeCompletedSubTodos( (Todo*) aTodo )) 4984 if (! removeCompletedSubTodos( (Todo*) aTodo ))
4985 deleteTodo = false; 4985 deleteTodo = false;
4986 } 4986 }
4987 if ( deleteTodo ) { 4987 if ( deleteTodo ) {
4988 if ( t->isCompleted() && !t->doesRecur()) { 4988 if ( t->isCompleted() && !t->doesRecur()) {
4989 checkExternalId( t ); 4989 checkExternalId( t );
4990 mCalendar->deleteTodo( t ); 4990 mCalendar->deleteTodo( t );
4991 changeTodoDisplay( t,KOGlobals::EVENTDELETED ); 4991 changeTodoDisplay( t,KOGlobals::EVENTDELETED );
4992 } 4992 }
4993 else 4993 else
4994 deleteTodo = false; 4994 deleteTodo = false;
4995 } 4995 }
4996 return deleteTodo; 4996 return deleteTodo;
4997 4997
4998} 4998}
4999void CalendarView::purgeCompleted() 4999void CalendarView::purgeCompleted()
5000{ 5000{
5001 int result = KMessageBox::warningContinueCancel(this, 5001 int result = KMessageBox::warningContinueCancel(this,
5002 i18n("Delete all completed todos?\n(Completed recurring todos\nwill not be deleted!)"),i18n("Purge Todos"),i18n("Purge")); 5002 i18n("Delete all completed todos?\n(Completed recurring todos\nwill not be deleted!)"),i18n("Purge Todos"),i18n("Purge"));
5003 5003
5004 if (result == KMessageBox::Continue) { 5004 if (result == KMessageBox::Continue) {
5005 5005
5006 QPtrList<Todo> todoCal; 5006 QPtrList<Todo> todoCal;
5007 QPtrList<Todo> rootTodos; 5007 QPtrList<Todo> rootTodos;
5008 //QPtrList<Incidence> rel; 5008 //QPtrList<Incidence> rel;
5009 Todo *aTodo; 5009 Todo *aTodo;
5010 todoCal = calendar()->todos(); 5010 todoCal = calendar()->todos();
5011 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) { 5011 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) {
5012 if ( !aTodo->relatedTo() ) 5012 if ( !aTodo->relatedTo() )
5013 rootTodos.append( aTodo ); 5013 rootTodos.append( aTodo );
5014 } 5014 }
5015 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) { 5015 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) {
5016 removeCompletedSubTodos( aTodo ); 5016 removeCompletedSubTodos( aTodo );
5017 } 5017 }
5018 5018
5019 updateView(); 5019 updateView();
5020 } 5020 }
5021} 5021}
5022 5022
5023void CalendarView::slotCalendarChanged() 5023void CalendarView::slotCalendarChanged()
5024{ 5024{
5025 ; 5025 ;
5026} 5026}
5027 5027
5028void CalendarView::keyPressEvent ( QKeyEvent *e) 5028void CalendarView::keyPressEvent ( QKeyEvent *e)
5029{ 5029{
5030 //qDebug("CalendarView::keyPressEvent "); 5030 //qDebug("CalendarView::keyPressEvent ");
5031 e->ignore(); 5031 e->ignore();
5032} 5032}
5033 5033
5034 5034
5035bool CalendarView::sync(KSyncManager* manager, QString filename, int mode) 5035bool CalendarView::sync(KSyncManager* manager, QString filename, int mode)
5036{ 5036{
5037 5037
5038 if ( manager != mSyncManager) 5038 if ( manager != mSyncManager)
5039 qDebug("KO: Internal error-1. SyncManager mismatch "); 5039 qDebug("KO: Internal error-1. SyncManager mismatch ");
5040 if ( filename == QDir::homeDirPath ()+"/.kdecalendardump.ics" ) { 5040 if ( filename == QDir::homeDirPath ()+"/.kdecalendardump.ics" ) {
5041 qDebug("KO: SyncKDE request detected!"); 5041 qDebug("KO: SyncKDE request detected!");
5042 } 5042 }
5043 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); 5043 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice();
5044 mCurrentSyncName = mSyncManager->getCurrentSyncName(); 5044 mCurrentSyncName = mSyncManager->getCurrentSyncName();
5045 return syncCalendar( filename, mode ); 5045 return syncCalendar( filename, mode );
5046} 5046}
5047bool CalendarView::syncExternal(KSyncManager* manager, QString resource) 5047bool CalendarView::syncExternal(KSyncManager* manager, QString resource)
5048{ 5048{
5049 //mSyncManager = manager; 5049 //mSyncManager = manager;
5050 if ( manager != mSyncManager) 5050 if ( manager != mSyncManager)
5051 qDebug("KO: Internal error-2. SyncManager mismatch "); 5051 qDebug("KO: Internal error-2. SyncManager mismatch ");
5052 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); 5052 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice();
5053 mCurrentSyncName = mSyncManager->getCurrentSyncName(); 5053 mCurrentSyncName = mSyncManager->getCurrentSyncName();
5054 if ( resource == "sharp" ) 5054 if ( resource == "sharp" )
5055 syncExternal( 0 ); 5055 syncExternal( 0 );
5056 if ( resource == "phone" ) 5056 if ( resource == "phone" )
5057 syncExternal( 1 ); 5057 syncExternal( 1 );
5058 // pending setmodified 5058 // pending setmodified
5059 return true; 5059 return true;
5060} 5060}
5061void CalendarView::setSyncManager(KSyncManager* manager) 5061void CalendarView::setSyncManager(KSyncManager* manager)
5062{ 5062{
5063 mSyncManager = manager; 5063 mSyncManager = manager;
5064} 5064}
5065 5065
5066void CalendarView::removeSyncInfo( QString syncProfile) 5066void CalendarView::removeSyncInfo( QString syncProfile)
5067{ 5067{
5068 qDebug("KO: removeSyncInfo for profile %s ", syncProfile.latin1()); 5068 qDebug("KO: removeSyncInfo for profile %s ", syncProfile.latin1());
5069 mCalendar->removeSyncInfo( syncProfile ); 5069 mCalendar->removeSyncInfo( syncProfile );
5070 5070
5071} 5071}
5072 5072
5073void CalendarView::undo_delete() 5073void CalendarView::undo_delete()
5074{ 5074{
5075 //qDebug("undo_delete() "); 5075 //qDebug("undo_delete() ");
5076 Incidence* undo = mCalendar->undoIncidence(); 5076 Incidence* undo = mCalendar->undoIncidence();
5077 if ( !undo ) { 5077 if ( !undo ) {
5078 KMessageBox::sorry(this,i18n("There is nothing to undo!"), 5078 KMessageBox::sorry(this,i18n("There is nothing to undo!"),
5079 i18n("KO/Pi")); 5079 i18n("KO/Pi"));
5080 return; 5080 return;
5081 } 5081 }
5082 if ( KMessageBox::Continue ==KMessageBox::warningContinueCancel(this,KGlobal::formatMessage ( undo->summary(),0 ) + 5082 if ( KMessageBox::Continue ==KMessageBox::warningContinueCancel(this,KGlobal::formatMessage ( undo->summary(),0 ) +
5083 i18n("\nAre you sure you want\nto restore this?"), 5083 i18n("\nAre you sure you want\nto restore this?"),
5084 i18n("KO/Pi Confirmation"),i18n("Restore"))) { 5084 i18n("KO/Pi Confirmation"),i18n("Restore"))) {
5085 mCalendar->undoDeleteIncidence(); 5085 mCalendar->undoDeleteIncidence();
5086 updateView(); 5086 updateView();
5087 } 5087 }
5088} 5088}
5089 5089
5090void CalendarView::slotViewerClosed() 5090void CalendarView::slotViewerClosed()
5091{ 5091{
5092 QTimer::singleShot( 50, this, SLOT ( resetFocus() ) ); 5092 QTimer::singleShot( 50, this, SLOT ( resetFocus() ) );
5093} 5093}
5094 5094
5095void CalendarView::resetFocus() 5095void CalendarView::resetFocus()
5096{ 5096{
5097 if ( mViewerCallerIsSearchDialog ) { 5097 if ( mViewerCallerIsSearchDialog ) {
5098 if ( mDialogManager->getSearchDialog()->isVisible() ){ 5098 if ( mDialogManager->getSearchDialog()->isVisible() ){
5099 mDialogManager->getSearchDialog()->raise(); 5099 mDialogManager->getSearchDialog()->raise();
5100 mDialogManager->getSearchDialog()->setActiveWindow(); 5100 mDialogManager->getSearchDialog()->setActiveWindow();
5101 mDialogManager->getSearchDialog()->listview()->resetFocus(); 5101 mDialogManager->getSearchDialog()->listview()->resetFocus();
5102 } else 5102 } else
5103 mViewerCallerIsSearchDialog = false; 5103 mViewerCallerIsSearchDialog = false;
5104 } 5104 }
5105 if ( !mViewerCallerIsSearchDialog ) { 5105 if ( !mViewerCallerIsSearchDialog ) {
5106 //mViewManager->currentView()->setFocus(); 5106 //mViewManager->currentView()->setFocus();
5107 //qDebug("sssssssssssssssset focus "); 5107 //qDebug("sssssssssssssssset focus ");
5108 topLevelWidget()->raise(); 5108 topLevelWidget()->raise();
5109 setActiveWindow(); 5109 setActiveWindow();
5110 //setFocus(); 5110 //setFocus();
5111 } 5111 }
5112 mViewerCallerIsSearchDialog = false; 5112 mViewerCallerIsSearchDialog = false;
5113} 5113}
5114 5114
5115void CalendarView::showNextAlarms() 5115void CalendarView::showNextAlarms()
5116{ 5116{
5117 QString message; 5117 QString message;
5118 QDateTime nextAl = mCalendar->nextAlarmEventDateTime(); 5118 QDateTime nextAl = mCalendar->nextAlarmEventDateTime();
5119 if ( nextAl.isValid() && mNextAlarmDateTime > QDateTime::currentDateTime() ) { 5119 if ( nextAl.isValid() && mNextAlarmDateTime > QDateTime::currentDateTime() ) {
5120 QString sum = mCalendar->nextSummary(); 5120 QString sum = mCalendar->nextSummary();
5121 QDateTime nextA = mNextAlarmDateTime; 5121 QDateTime nextA = mNextAlarmDateTime;
5122 QDateTime cur = QDateTime::currentDateTime(); 5122 QDateTime cur = QDateTime::currentDateTime();
5123 int secs = cur.secsTo( nextA ); 5123 int secs = cur.secsTo( nextA );
5124 int min = secs /60; 5124 int min = secs /60;
5125 int hours = min /60; 5125 int hours = min /60;
5126 min = min % 60; 5126 min = min % 60;
5127 int days = hours /24; 5127 int days = hours /24;
5128 hours = hours % 24; 5128 hours = hours % 24;
5129 5129
5130 //message = i18n("The next alarm is in:\n"); 5130 //message = i18n("The next alarm is in:\n");
5131 if ( days > 1 ) 5131 if ( days > 1 )
5132 message += i18n("%1 days\n").arg( days ); 5132 message += i18n("%1 days\n").arg( days );
5133 else if ( days == 1 ) 5133 else if ( days == 1 )
5134 message += i18n("1 day\n"); 5134 message += i18n("1 day\n");
5135 if ( hours > 1 ) 5135 if ( hours > 1 )
5136 message += i18n("%1 hours\n").arg( hours ); 5136 message += i18n("%1 hours\n").arg( hours );
5137 else if ( hours == 1 ) 5137 else if ( hours == 1 )
5138 message += i18n("1 hour\n"); 5138 message += i18n("1 hour\n");
5139 if ( min > 1 ) 5139 if ( min > 1 )
5140 message += i18n("%1 minutes\n").arg( min ); 5140 message += i18n("%1 minutes\n").arg( min );
5141 else if ( min == 1 ) 5141 else if ( min == 1 )
5142 message += i18n("1 minute\n"); 5142 message += i18n("1 minute\n");
5143 if ( message.isEmpty() ) 5143 if ( message.isEmpty() )
5144 message = i18n("The next alarm is in\nless than one minute!"); 5144 message = i18n("The next alarm is in\nless than one minute!");
5145 else 5145 else
5146 message = i18n("The next alarm is in:\n") + message; 5146 message = i18n("The next alarm is in:\n") + message;
5147 message += i18n("\n(%1)\n\n%2\n(%3)\n").arg( KGlobal::locale()->formatDateTime(nextA , false)).arg(sum ).arg( KGlobal::locale()->formatDateTime(nextAl , false)) ; 5147 message += i18n("\n(%1)\n\n%2\n(%3)\n").arg( KGlobal::locale()->formatDateTime(nextA , false)).arg(sum ).arg( KGlobal::locale()->formatDateTime(nextAl , false)) ;
5148 } else { 5148 } else {
5149 message = i18n("There is no next alarm."); 5149 message = i18n("There is no next alarm.");
5150 5150
5151 } 5151 }
5152#ifdef DESKTOP_VERSION 5152#ifdef DESKTOP_VERSION
5153 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 5153 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
5154 message += i18n("\nThe internal alarm notification is disabled!\n"); 5154 message += i18n("\nThe internal alarm notification is disabled!\n");
5155 message += i18n("Enable it in the settings menu, TAB alarm."); 5155 message += i18n("Enable it in the settings menu, TAB alarm.");
5156 } 5156 }
5157 5157
5158#endif 5158#endif
5159 KMessageBox::information( this, message); 5159 KMessageBox::information( this, message);
5160} 5160}