author | zautrix <zautrix> | 2005-10-22 14:49:34 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2005-10-22 14:49:34 (UTC) |
commit | 30550b912b291ccedc8ab100004ba8c5ed216097 (patch) (unidiff) | |
tree | 9b815bc396ce304b1e975226306da5a498e70259 | |
parent | 2e5c0a288f7c54cce7e0327ddbbd160f242758f1 (diff) | |
download | kdepimpi-30550b912b291ccedc8ab100004ba8c5ed216097.zip kdepimpi-30550b912b291ccedc8ab100004ba8c5ed216097.tar.gz kdepimpi-30550b912b291ccedc8ab100004ba8c5ed216097.tar.bz2 |
fix
-rw-r--r-- | korganizer/calendarview.cpp | 2 |
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 | } |
2497 | bool CalendarView::checkFileVersion(QString fn) | 2497 | bool 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 | } |
2528 | bool CalendarView::saveCalendars() | 2528 | bool 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 | } |
2558 | bool CalendarView::saveCalendar( QString filename ) | 2558 | bool 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 | ||
2582 | void CalendarView::closeCalendar() | 2582 | void 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 | ||
2594 | void CalendarView::archiveCalendar() | 2594 | void CalendarView::archiveCalendar() |
2595 | { | 2595 | { |
2596 | mDialogManager->showArchiveDialog(); | 2596 | mDialogManager->showArchiveDialog(); |
2597 | } | 2597 | } |
2598 | 2598 | ||
2599 | 2599 | ||
2600 | void CalendarView::readSettings() | 2600 | void 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 | ||
2739 | void CalendarView::checkSuspendAlarm() | 2739 | void 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 | } |
2745 | void CalendarView::writeSettings() | 2745 | void 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 | ||
2861 | void CalendarView::readFilterSettings(KConfig *config) | 2861 | void 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 | ||
2901 | void CalendarView::writeFilterSettings(KConfig *config) | 2901 | void 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 | ||
2925 | void CalendarView::goToday() | 2925 | void 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 | ||
2933 | void CalendarView::goNext() | 2933 | void CalendarView::goNext() |
2934 | { | 2934 | { |
2935 | mNavigator->selectNext(); | 2935 | mNavigator->selectNext(); |
2936 | } | 2936 | } |
2937 | 2937 | ||
2938 | void CalendarView::goPrevious() | 2938 | void CalendarView::goPrevious() |
2939 | { | 2939 | { |
2940 | mNavigator->selectPrevious(); | 2940 | mNavigator->selectPrevious(); |
2941 | } | 2941 | } |
2942 | void CalendarView::goNextMonth() | 2942 | void CalendarView::goNextMonth() |
2943 | { | 2943 | { |
2944 | mNavigator->selectNextMonth(); | 2944 | mNavigator->selectNextMonth(); |
2945 | } | 2945 | } |
2946 | 2946 | ||
2947 | void CalendarView::goPreviousMonth() | 2947 | void CalendarView::goPreviousMonth() |
2948 | { | 2948 | { |
2949 | mNavigator->selectPreviousMonth(); | 2949 | mNavigator->selectPreviousMonth(); |
2950 | } | 2950 | } |
2951 | 2951 | ||
2952 | void CalendarView::updateConfig() | 2952 | void 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 | ||
2965 | void CalendarView::eventChanged(Event *event) | 2965 | void CalendarView::eventChanged(Event *event) |
2966 | { | 2966 | { |
2967 | changeEventDisplay(event,KOGlobals::EVENTEDITED); | 2967 | changeEventDisplay(event,KOGlobals::EVENTEDITED); |
2968 | //updateUnmanagedViews(); | 2968 | //updateUnmanagedViews(); |
2969 | } | 2969 | } |
2970 | 2970 | ||
2971 | void CalendarView::eventAdded(Event *event) | 2971 | void CalendarView::eventAdded(Event *event) |
2972 | { | 2972 | { |
2973 | changeEventDisplay(event,KOGlobals::EVENTADDED); | 2973 | changeEventDisplay(event,KOGlobals::EVENTADDED); |
2974 | } | 2974 | } |
2975 | 2975 | ||
2976 | void CalendarView::eventToBeDeleted(Event *) | 2976 | void 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 | ||
2981 | void CalendarView::eventDeleted() | 2981 | void CalendarView::eventDeleted() |
2982 | { | 2982 | { |
2983 | changeEventDisplay(0,KOGlobals::EVENTDELETED); | 2983 | changeEventDisplay(0,KOGlobals::EVENTDELETED); |
2984 | } | 2984 | } |
2985 | void CalendarView::changeTodoDisplay(Todo *which, int action) | 2985 | void 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 | ||
2998 | void CalendarView::changeIncidenceDisplay(Incidence *which, int action) | 2998 | void 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. |
3013 | void CalendarView::changeEventDisplay(Event *which, int action) | 3013 | void 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 | } |
3058 | void CalendarView::checkConflictForEvent() | 3058 | void 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( ¤t, 0 ) ) { | 3067 | if ( ! conflictingEvent->matchTime( ¤t, 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( ¤t, &conflict ); | 3114 | skip = !test->matchTime( ¤t, &conflict ); |
3115 | else | 3115 | else |
3116 | skip = !test->matchTime( ¤t, 0 ); | 3116 | skip = !test->matchTime( ¤t, 0 ); |
3117 | if ( !skip ) { | 3117 | if ( !skip ) { |
3118 | if ( conflictingEvent->isOverlapping ( test, &retVal, ¤t ) ) { | 3118 | if ( conflictingEvent->isOverlapping ( test, &retVal, ¤t ) ) { |
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 | ||
3156 | void CalendarView::updateTodoViews() | 3156 | void 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 | ||
3165 | void CalendarView::clearAllViews() | 3165 | void 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 | } |
3176 | void CalendarView::updateView() | 3176 | void 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 | ||
3195 | void CalendarView::updateUnmanagedViews() | 3195 | void CalendarView::updateUnmanagedViews() |
3196 | { | 3196 | { |
3197 | mDateNavigator->updateDayMatrix(); | 3197 | mDateNavigator->updateDayMatrix(); |
3198 | } | 3198 | } |
3199 | 3199 | ||
3200 | int CalendarView::msgItemDelete(const QString name) | 3200 | int 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 | ||
3208 | void CalendarView::edit_cut() | 3208 | void 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 | ||
3229 | void CalendarView::edit_copy() | 3229 | void 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 | ||
3249 | void CalendarView::edit_paste() | 3249 | void 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 | } |
3258 | void CalendarView::edit_global_options() | 3258 | void 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 | } |
3279 | void CalendarView::edit_options() | 3279 | void CalendarView::edit_options() |
3280 | { | 3280 | { |
3281 | mDialogManager->showOptionsDialog(); | 3281 | mDialogManager->showOptionsDialog(); |
3282 | } | 3282 | } |
3283 | 3283 | ||
3284 | 3284 | ||
3285 | void CalendarView::slotSelectPickerDate( QDate d) | 3285 | void 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 | ||
3346 | void CalendarView::removeCategories() | 3346 | void 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 | ||
3367 | int CalendarView::addCategories() | 3367 | int 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 | ||
3391 | void CalendarView::editCategories() | 3391 | void 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 | } |
3397 | void CalendarView::manageCategories() | 3397 | void 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 | ||
3425 | void CalendarView::beamIncidence(Incidence * Inc) | 3425 | void 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 | } |
3431 | void CalendarView::beamCalendar() | 3431 | void 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 | } |
3437 | void CalendarView::beamFilteredCalendar() | 3437 | void 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 | } |
3443 | void CalendarView::beamIncidenceList(QPtrList<Incidence> delSel ) | 3443 | void 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 |
3505 | void CalendarView::beamDone( Ir *ir ) | 3505 | void 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 |
3512 | void CalendarView::beamDone( Ir *){;} | 3512 | void CalendarView::beamDone( Ir *){;} |
3513 | #endif | 3513 | #endif |
3514 | void CalendarView::moveIncidence(Incidence * inc ) | 3514 | void 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 | } |
3534 | void CalendarView::showDatePickerPopup() | 3534 | void 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 | } |
3557 | void CalendarView::showDatePicker( ) | 3557 | void 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 | ||
3564 | void CalendarView::showEventEditor() | 3564 | void 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 | } |
3586 | void CalendarView::showTodoEditor() | 3586 | void 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 | ||
3609 | void CalendarView::cloneIncidence() | 3609 | void 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 | } |
3617 | void CalendarView::moveIncidence() | 3617 | void 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 | } |
3625 | void CalendarView::beamIncidence() | 3625 | void 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 | } |
3633 | void CalendarView::toggleCancelIncidence() | 3633 | void 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 | ||
3643 | void CalendarView::cancelIncidence(Incidence * inc ) | 3643 | void 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 | } |
3649 | void CalendarView::cloneIncidence(Incidence * orgInc ) | 3649 | void 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 | ||
3703 | void CalendarView::newEvent() | 3703 | void 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 | ||
3732 | void CalendarView::newEvent(QDateTime fh) | 3732 | void 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 | ||
3738 | void CalendarView::newEvent(QDate dt) | 3738 | void 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 | } |
3743 | void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint) | 3743 | void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint) |
3744 | { | 3744 | { |
3745 | newEvent(fromHint, toHint, false); | 3745 | newEvent(fromHint, toHint, false); |
3746 | } | 3746 | } |
3747 | void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay) | 3747 | void 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 | } |
3763 | void CalendarView::todoAdded(Todo * t) | 3763 | void CalendarView::todoAdded(Todo * t) |
3764 | { | 3764 | { |
3765 | 3765 | ||
3766 | changeTodoDisplay ( t ,KOGlobals::EVENTADDED); | 3766 | changeTodoDisplay ( t ,KOGlobals::EVENTADDED); |
3767 | updateTodoViews(); | 3767 | updateTodoViews(); |
3768 | } | 3768 | } |
3769 | void CalendarView::todoChanged(Todo * t) | 3769 | void CalendarView::todoChanged(Todo * t) |
3770 | { | 3770 | { |
3771 | emit todoModified( t, 4 ); | 3771 | emit todoModified( t, 4 ); |
3772 | // updateTodoViews(); | 3772 | // updateTodoViews(); |
3773 | } | 3773 | } |
3774 | void CalendarView::todoToBeDeleted(Todo *) | 3774 | void CalendarView::todoToBeDeleted(Todo *) |
3775 | { | 3775 | { |
3776 | //qDebug("todoToBeDeleted(Todo *) "); | 3776 | //qDebug("todoToBeDeleted(Todo *) "); |
3777 | updateTodoViews(); | 3777 | updateTodoViews(); |
3778 | } | 3778 | } |
3779 | void CalendarView::todoDeleted() | 3779 | void CalendarView::todoDeleted() |
3780 | { | 3780 | { |
3781 | //qDebug(" todoDeleted()"); | 3781 | //qDebug(" todoDeleted()"); |
3782 | updateTodoViews(); | 3782 | updateTodoViews(); |
3783 | } | 3783 | } |
3784 | 3784 | ||
3785 | 3785 | ||
3786 | void CalendarView::newTodoDateTime( QDateTime dt, bool allday ) | 3786 | void 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 | ||
3802 | void CalendarView::newTodo() | 3802 | void CalendarView::newTodo() |
3803 | { | 3803 | { |
3804 | newTodoDateTime( QDateTime(),true ); | 3804 | newTodoDateTime( QDateTime(),true ); |
3805 | } | 3805 | } |
3806 | 3806 | ||
3807 | void CalendarView::newSubTodo() | 3807 | void 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 | ||
3813 | void CalendarView::newSubTodo(Todo *parentEvent) | 3813 | void 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 | ||
3822 | void CalendarView::newFloatingEvent() | 3822 | void 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 | ||
3832 | void CalendarView::editEvent( Event *event ) | 3832 | void 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 | } |
3846 | void CalendarView::editJournal( Journal *jour ) | 3846 | void 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 | } |
3853 | void CalendarView::editTodo( Todo *todo ) | 3853 | void 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 | ||
3868 | KOEventViewerDialog* CalendarView::getEventViewerDialog() | 3868 | KOEventViewerDialog* 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 | } |
3888 | void CalendarView::showEvent(Event *event) | 3888 | void CalendarView::showEvent(Event *event) |
3889 | { | 3889 | { |
3890 | getEventViewerDialog()->setEvent(event); | 3890 | getEventViewerDialog()->setEvent(event); |
3891 | getEventViewerDialog()->showMe(); | 3891 | getEventViewerDialog()->showMe(); |
3892 | } | 3892 | } |
3893 | 3893 | ||
3894 | void CalendarView::showTodo(Todo *event) | 3894 | void CalendarView::showTodo(Todo *event) |
3895 | { | 3895 | { |
3896 | getEventViewerDialog()->setTodo(event); | 3896 | getEventViewerDialog()->setTodo(event); |
3897 | getEventViewerDialog()->showMe(); | 3897 | getEventViewerDialog()->showMe(); |
3898 | } | 3898 | } |
3899 | void CalendarView::showJournal( Journal *jour ) | 3899 | void 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 | ||
3917 | void CalendarView::appointment_show() | 3917 | void 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 | ||
3937 | void CalendarView::appointment_edit() | 3937 | void 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 | ||
3957 | void CalendarView::appointment_delete() | 3957 | void 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 | ||
3977 | void CalendarView::todo_resub( Todo * parent, Todo * sub ) | 3977 | void 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 | } |
3987 | void CalendarView::todo_unsub(Todo *anTodo ) | 3987 | void CalendarView::todo_unsub(Todo *anTodo ) |
3988 | { | 3988 | { |
3989 | todo_resub( 0, anTodo ); | 3989 | todo_resub( 0, anTodo ); |
3990 | } | 3990 | } |
3991 | 3991 | ||
3992 | void CalendarView::deleteTodo(Todo *todo) | 3992 | void 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 | } |
4028 | void CalendarView::deleteJournal(Journal *jour) | 4028 | void 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 | ||
4058 | void CalendarView::deleteEvent(Event *anEvent) | 4058 | void 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 | ||
4142 | bool CalendarView::deleteEvent(const QString &uid) | 4142 | bool 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 | ||
4155 | void CalendarView::action_mail() | 4155 | void 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 | ||
4209 | void CalendarView::schedule_publish(Incidence *incidence) | 4209 | void 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 | ||
4270 | void CalendarView::schedule_request(Incidence *incidence) | 4270 | void CalendarView::schedule_request(Incidence *incidence) |
4271 | { | 4271 | { |
4272 | schedule(Scheduler::Request,incidence); | 4272 | schedule(Scheduler::Request,incidence); |
4273 | } | 4273 | } |
4274 | 4274 | ||
4275 | void CalendarView::schedule_refresh(Incidence *incidence) | 4275 | void CalendarView::schedule_refresh(Incidence *incidence) |
4276 | { | 4276 | { |
4277 | schedule(Scheduler::Refresh,incidence); | 4277 | schedule(Scheduler::Refresh,incidence); |
4278 | } | 4278 | } |
4279 | 4279 | ||
4280 | void CalendarView::schedule_cancel(Incidence *incidence) | 4280 | void CalendarView::schedule_cancel(Incidence *incidence) |
4281 | { | 4281 | { |
4282 | schedule(Scheduler::Cancel,incidence); | 4282 | schedule(Scheduler::Cancel,incidence); |
4283 | } | 4283 | } |
4284 | 4284 | ||
4285 | void CalendarView::schedule_add(Incidence *incidence) | 4285 | void CalendarView::schedule_add(Incidence *incidence) |
4286 | { | 4286 | { |
4287 | schedule(Scheduler::Add,incidence); | 4287 | schedule(Scheduler::Add,incidence); |
4288 | } | 4288 | } |
4289 | 4289 | ||
4290 | void CalendarView::schedule_reply(Incidence *incidence) | 4290 | void CalendarView::schedule_reply(Incidence *incidence) |
4291 | { | 4291 | { |
4292 | schedule(Scheduler::Reply,incidence); | 4292 | schedule(Scheduler::Reply,incidence); |
4293 | } | 4293 | } |
4294 | 4294 | ||
4295 | void CalendarView::schedule_counter(Incidence *incidence) | 4295 | void CalendarView::schedule_counter(Incidence *incidence) |
4296 | { | 4296 | { |
4297 | schedule(Scheduler::Counter,incidence); | 4297 | schedule(Scheduler::Counter,incidence); |
4298 | } | 4298 | } |
4299 | 4299 | ||
4300 | void CalendarView::schedule_declinecounter(Incidence *incidence) | 4300 | void CalendarView::schedule_declinecounter(Incidence *incidence) |
4301 | { | 4301 | { |
4302 | schedule(Scheduler::Declinecounter,incidence); | 4302 | schedule(Scheduler::Declinecounter,incidence); |
4303 | } | 4303 | } |
4304 | 4304 | ||
4305 | void CalendarView::schedule_publish_freebusy(int daysToPublish) | 4305 | void 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 | ||
4324 | void CalendarView::schedule(Scheduler::Method method, Incidence *incidence) | 4324 | void 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 | ||
4391 | void CalendarView::openAddressbook() | 4391 | void CalendarView::openAddressbook() |
4392 | { | 4392 | { |
4393 | KRun::runCommand("kaddressbook"); | 4393 | KRun::runCommand("kaddressbook"); |
4394 | } | 4394 | } |
4395 | 4395 | ||
4396 | void CalendarView::setModified(bool modified) | 4396 | void 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 | ||
4407 | bool CalendarView::isReadOnly() | 4407 | bool CalendarView::isReadOnly() |
4408 | { | 4408 | { |
4409 | return mReadOnly; | 4409 | return mReadOnly; |
4410 | } | 4410 | } |
4411 | 4411 | ||
4412 | void CalendarView::setReadOnly(bool readOnly) | 4412 | void 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 | ||
4420 | bool CalendarView::isModified() | 4420 | bool CalendarView::isModified() |
4421 | { | 4421 | { |
4422 | return mModified; | 4422 | return mModified; |
4423 | } | 4423 | } |
4424 | void CalendarView::slotprintSelInc() | 4424 | void 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 | } |
4434 | void CalendarView::printSetup() | 4434 | void 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 | ||
4443 | void CalendarView::print() | 4443 | void 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 | ||
4454 | void CalendarView::printPreview() | 4454 | void 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 | } |
4467 | bool CalendarView::exportICalendar( QString filename ) | 4467 | bool 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 | ||
4476 | bool CalendarView::exportICalendar() | 4476 | bool 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 | ||
4481 | bool CalendarView::exportVCalendar( QString filename ) | 4481 | bool 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 | ||
4501 | void CalendarView::eventUpdated(Incidence *) | 4501 | void 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 | ||
4509 | void CalendarView::adaptNavigationUnits() | 4509 | void 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 | ||
4523 | void CalendarView::processMainViewSelection( Incidence *incidence ) | 4523 | void 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 | ||
4529 | void CalendarView::processTodoListSelection( Incidence *incidence ) | 4529 | void 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 | ||
4537 | void CalendarView::processIncidenceSelection( Incidence *incidence ) | 4537 | void 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 | ||
4589 | void CalendarView::checkClipboard() | 4589 | void 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 | ||
4600 | void CalendarView::showDates(const DateList &selectedDates) | 4600 | void 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 | ||
4644 | QPtrList<CalFilter> CalendarView::filters() | 4644 | QPtrList<CalFilter> CalendarView::filters() |
4645 | { | 4645 | { |
4646 | return mFilters; | 4646 | return mFilters; |
4647 | 4647 | ||
4648 | } | 4648 | } |
4649 | void CalendarView::editFilters() | 4649 | void 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 | } |
4661 | void CalendarView::toggleFilter() | 4661 | void 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 | ||
4670 | KOFilterView *CalendarView::filterView() | 4670 | KOFilterView *CalendarView::filterView() |
4671 | { | 4671 | { |
4672 | return mFilterView; | 4672 | return mFilterView; |
4673 | } | 4673 | } |
4674 | void CalendarView::selectFilter( int fil ) | 4674 | void CalendarView::selectFilter( int fil ) |
4675 | { | 4675 | { |
4676 | mFilterView->setSelectedFilter( fil ); | 4676 | mFilterView->setSelectedFilter( fil ); |
4677 | updateUnmanagedViews(); | 4677 | updateUnmanagedViews(); |
4678 | } | 4678 | } |
4679 | void CalendarView::showFilter(bool visible) | 4679 | void 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 | } |
4713 | void CalendarView::toggleFilerEnabled( ) | 4713 | void 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 | } |
4721 | void CalendarView::updateFilter() | 4721 | void 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 | ||
4740 | void CalendarView::filterEdited() | 4740 | void CalendarView::filterEdited() |
4741 | { | 4741 | { |
4742 | mFilterView->updateFilters(); | 4742 | mFilterView->updateFilters(); |
4743 | updateFilter(); | 4743 | updateFilter(); |
4744 | writeSettings(); | 4744 | writeSettings(); |
4745 | } | 4745 | } |
4746 | 4746 | ||
4747 | 4747 | ||
4748 | void CalendarView::takeOverEvent() | 4748 | void 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 | ||
4761 | void CalendarView::takeOverCalendar() | 4761 | void 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 | ||
4790 | void CalendarView::showIntro() | 4790 | void CalendarView::showIntro() |
4791 | { | 4791 | { |
4792 | kdDebug() << "To be implemented." << endl; | 4792 | kdDebug() << "To be implemented." << endl; |
4793 | } | 4793 | } |
4794 | 4794 | ||
4795 | QWidgetStack *CalendarView::viewStack() | 4795 | QWidgetStack *CalendarView::viewStack() |
4796 | { | 4796 | { |
4797 | return mRightFrame; | 4797 | return mRightFrame; |
4798 | } | 4798 | } |
4799 | 4799 | ||
4800 | QWidget *CalendarView::leftFrame() | 4800 | QWidget *CalendarView::leftFrame() |
4801 | { | 4801 | { |
4802 | return ( QWidget *)mLeftFrame; | 4802 | return ( QWidget *)mLeftFrame; |
4803 | } | 4803 | } |
4804 | 4804 | ||
4805 | DateNavigator *CalendarView::dateNavigator() | 4805 | DateNavigator *CalendarView::dateNavigator() |
4806 | { | 4806 | { |
4807 | return mNavigator; | 4807 | return mNavigator; |
4808 | } | 4808 | } |
4809 | 4809 | ||
4810 | KDateNavigator* CalendarView::dateNavigatorWidget() | 4810 | KDateNavigator* CalendarView::dateNavigatorWidget() |
4811 | { | 4811 | { |
4812 | return mDateNavigator->navigatorView(); | 4812 | return mDateNavigator->navigatorView(); |
4813 | } | 4813 | } |
4814 | void CalendarView::toggleDateNavigatorWidget() | 4814 | void 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 | } |
4823 | void CalendarView::addView(KOrg::BaseView *view) | 4823 | void CalendarView::addView(KOrg::BaseView *view) |
4824 | { | 4824 | { |
4825 | mViewManager->addView(view); | 4825 | mViewManager->addView(view); |
4826 | } | 4826 | } |
4827 | 4827 | ||
4828 | void CalendarView::showView(KOrg::BaseView *view) | 4828 | void CalendarView::showView(KOrg::BaseView *view) |
4829 | { | 4829 | { |
4830 | mViewManager->showView(view, mLeftFrame->isVisible()); | 4830 | mViewManager->showView(view, mLeftFrame->isVisible()); |
4831 | } | 4831 | } |
4832 | 4832 | ||
4833 | Incidence *CalendarView::currentSelection() | 4833 | Incidence *CalendarView::currentSelection() |
4834 | { | 4834 | { |
4835 | return mViewManager->currentSelection(); | 4835 | return mViewManager->currentSelection(); |
4836 | } | 4836 | } |
4837 | void CalendarView::toggleAllDaySize() | 4837 | void 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 | } |
4847 | void CalendarView::toggleExpand() | 4847 | void 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 | ||
4864 | void CalendarView::calendarModified( bool modified, Calendar * ) | 4864 | void CalendarView::calendarModified( bool modified, Calendar * ) |
4865 | { | 4865 | { |
4866 | setModified( modified ); | 4866 | setModified( modified ); |
4867 | } | 4867 | } |
4868 | 4868 | ||
4869 | Todo *CalendarView::selectedTodo() | 4869 | Todo *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 | ||
4884 | void CalendarView::showIncidence() | 4884 | void 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 | } |
4894 | void CalendarView::editIncidenceDescription() | 4894 | void CalendarView::editIncidenceDescription() |
4895 | { | 4895 | { |
4896 | mFlagEditDescription = true; | 4896 | mFlagEditDescription = true; |
4897 | editIncidence(); | 4897 | editIncidence(); |
4898 | mFlagEditDescription = false; | 4898 | mFlagEditDescription = false; |
4899 | } | 4899 | } |
4900 | void CalendarView::editIncidence() | 4900 | void 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 | ||
4911 | void CalendarView::deleteIncidence() | 4911 | void 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 | } |
4919 | void CalendarView::showIncidence(QString uid) | 4919 | void 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 | } |
4925 | void CalendarView::showIncidence(Incidence *incidence) | 4925 | void 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 | ||
4940 | void CalendarView::editIncidence(Incidence *incidence) | 4940 | void 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 | ||
4950 | void CalendarView::deleteIncidence(Incidence *incidence) | 4950 | void 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 | ||
4965 | void CalendarView::lookForOutgoingMessages() | 4965 | void CalendarView::lookForOutgoingMessages() |
4966 | { | 4966 | { |
4967 | OutgoingDialog *ogd = mDialogManager->outgoingDialog(); | 4967 | OutgoingDialog *ogd = mDialogManager->outgoingDialog(); |
4968 | ogd->loadMessages(); | 4968 | ogd->loadMessages(); |
4969 | } | 4969 | } |
4970 | 4970 | ||
4971 | void CalendarView::lookForIncomingMessages() | 4971 | void CalendarView::lookForIncomingMessages() |
4972 | { | 4972 | { |
4973 | IncomingDialog *icd = mDialogManager->incomingDialog(); | 4973 | IncomingDialog *icd = mDialogManager->incomingDialog(); |
4974 | icd->retrieve(); | 4974 | icd->retrieve(); |
4975 | } | 4975 | } |
4976 | 4976 | ||
4977 | bool CalendarView::removeCompletedSubTodos( Todo* t ) | 4977 | bool 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 | } |
4999 | void CalendarView::purgeCompleted() | 4999 | void 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 | ||
5023 | void CalendarView::slotCalendarChanged() | 5023 | void CalendarView::slotCalendarChanged() |
5024 | { | 5024 | { |
5025 | ; | 5025 | ; |
5026 | } | 5026 | } |
5027 | 5027 | ||
5028 | void CalendarView::keyPressEvent ( QKeyEvent *e) | 5028 | void 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 | ||
5035 | bool CalendarView::sync(KSyncManager* manager, QString filename, int mode) | 5035 | bool 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 | } |
5047 | bool CalendarView::syncExternal(KSyncManager* manager, QString resource) | 5047 | bool 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 | } |
5061 | void CalendarView::setSyncManager(KSyncManager* manager) | 5061 | void CalendarView::setSyncManager(KSyncManager* manager) |
5062 | { | 5062 | { |
5063 | mSyncManager = manager; | 5063 | mSyncManager = manager; |
5064 | } | 5064 | } |
5065 | 5065 | ||
5066 | void CalendarView::removeSyncInfo( QString syncProfile) | 5066 | void 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 | ||
5073 | void CalendarView::undo_delete() | 5073 | void 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 | ||
5090 | void CalendarView::slotViewerClosed() | 5090 | void CalendarView::slotViewerClosed() |
5091 | { | 5091 | { |
5092 | QTimer::singleShot( 50, this, SLOT ( resetFocus() ) ); | 5092 | QTimer::singleShot( 50, this, SLOT ( resetFocus() ) ); |
5093 | } | 5093 | } |
5094 | 5094 | ||
5095 | void CalendarView::resetFocus() | 5095 | void 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 | ||
5115 | void CalendarView::showNextAlarms() | 5115 | void 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 | } |