summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 898da6c..e3b62de 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -2265,1537 +2265,1537 @@ bool CalendarView::importQtopia( const QString &categories,
2265 edit_sync_options(); 2265 edit_sync_options();
2266 qApp->processEvents(); 2266 qApp->processEvents();
2267 CalendarLocal* calendar = new CalendarLocal(); 2267 CalendarLocal* calendar = new CalendarLocal();
2268 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 2268 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
2269 bool syncOK = false; 2269 bool syncOK = false;
2270 QtopiaFormat qtopiaFormat; 2270 QtopiaFormat qtopiaFormat;
2271 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 2271 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
2272 bool loadOk = true; 2272 bool loadOk = true;
2273 if ( !categories.isEmpty() ) 2273 if ( !categories.isEmpty() )
2274 loadOk = qtopiaFormat.load( calendar, categories ); 2274 loadOk = qtopiaFormat.load( calendar, categories );
2275 if ( loadOk && !datebook.isEmpty() ) 2275 if ( loadOk && !datebook.isEmpty() )
2276 loadOk = qtopiaFormat.load( calendar, datebook ); 2276 loadOk = qtopiaFormat.load( calendar, datebook );
2277 if ( loadOk && !todolist.isEmpty() ) 2277 if ( loadOk && !todolist.isEmpty() )
2278 loadOk = qtopiaFormat.load( calendar, todolist ); 2278 loadOk = qtopiaFormat.load( calendar, todolist );
2279 2279
2280 if ( loadOk ) { 2280 if ( loadOk ) {
2281 getEventViewerDialog()->setSyncMode( true ); 2281 getEventViewerDialog()->setSyncMode( true );
2282 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs ); 2282 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs );
2283 getEventViewerDialog()->setSyncMode( false ); 2283 getEventViewerDialog()->setSyncMode( false );
2284 qApp->processEvents(); 2284 qApp->processEvents();
2285 if ( syncOK ) { 2285 if ( syncOK ) {
2286 if ( mSyncManager->mWriteBackFile ) 2286 if ( mSyncManager->mWriteBackFile )
2287 { 2287 {
2288 // write back XML file 2288 // write back XML file
2289 2289
2290 } 2290 }
2291 setModified( true ); 2291 setModified( true );
2292 } 2292 }
2293 } else { 2293 } else {
2294 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ; 2294 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ;
2295 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"), 2295 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"),
2296 question, i18n("Ok")) ; 2296 question, i18n("Ok")) ;
2297 } 2297 }
2298 delete calendar; 2298 delete calendar;
2299 updateView(); 2299 updateView();
2300 return syncOK; 2300 return syncOK;
2301 2301
2302 2302
2303#endif 2303#endif
2304 2304
2305} 2305}
2306 2306
2307void CalendarView::setSyncEventsReadOnly() 2307void CalendarView::setSyncEventsReadOnly()
2308{ 2308{
2309 mCalendar->setSyncEventsReadOnly(); 2309 mCalendar->setSyncEventsReadOnly();
2310} 2310}
2311 2311
2312bool CalendarView::loadCalendars() 2312bool CalendarView::loadCalendars()
2313{ 2313{
2314 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2314 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
2315 KopiCalendarFile * cal = calendars.first(); 2315 KopiCalendarFile * cal = calendars.first();
2316 mCalendar->setDefaultCalendar( 1 ); 2316 mCalendar->setDefaultCalendar( 1 );
2317 openCalendar( MainWindow::defaultFileName(), false ); 2317 openCalendar( MainWindow::defaultFileName(), false );
2318 cal = calendars.next(); 2318 cal = calendars.next();
2319 while ( cal ) { 2319 while ( cal ) {
2320 addCalendar( cal ); 2320 addCalendar( cal );
2321 cal = calendars.next(); 2321 cal = calendars.next();
2322 } 2322 }
2323 restoreCalendarSettings(); 2323 restoreCalendarSettings();
2324 return true; 2324 return true;
2325} 2325}
2326bool CalendarView::restoreCalendarSettings() 2326bool CalendarView::restoreCalendarSettings()
2327{ 2327{
2328 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2328 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
2329 KopiCalendarFile * cal = calendars.first(); 2329 KopiCalendarFile * cal = calendars.first();
2330 while ( cal ) { 2330 while ( cal ) {
2331 mCalendar->setCalendarEnabled( cal->mCalNumber,cal->isEnabled ); 2331 mCalendar->setCalendarEnabled( cal->mCalNumber,cal->isEnabled );
2332 mCalendar->setAlarmEnabled( cal->mCalNumber, cal->isAlarmEnabled ); 2332 mCalendar->setAlarmEnabled( cal->mCalNumber, cal->isAlarmEnabled );
2333 mCalendar->setReadOnly( cal->mCalNumber, cal->isReadOnly ); 2333 mCalendar->setReadOnly( cal->mCalNumber, cal->isReadOnly );
2334 if ( cal->isStandard ) 2334 if ( cal->isStandard )
2335 mCalendar->setDefaultCalendar( cal->mCalNumber ); 2335 mCalendar->setDefaultCalendar( cal->mCalNumber );
2336 cal = calendars.next(); 2336 cal = calendars.next();
2337 } 2337 }
2338 setSyncEventsReadOnly(); 2338 setSyncEventsReadOnly();
2339 mCalendar->reInitAlarmSettings(); 2339 mCalendar->reInitAlarmSettings();
2340 updateUnmanagedViews(); 2340 updateUnmanagedViews();
2341 updateView(); 2341 updateView();
2342 return true; 2342 return true;
2343} 2343}
2344void CalendarView::addCalendarId( int id ) 2344void CalendarView::addCalendarId( int id )
2345{ 2345{
2346 KopiCalendarFile * cal = KOPrefs::instance()->getCalendar( id ); 2346 KopiCalendarFile * cal = KOPrefs::instance()->getCalendar( id );
2347 if ( cal ) 2347 if ( cal )
2348 addCalendar( cal ); 2348 addCalendar( cal );
2349} 2349}
2350bool CalendarView::addCalendar( KopiCalendarFile * cal ) 2350bool CalendarView::addCalendar( KopiCalendarFile * cal )
2351{ 2351{
2352 cal->mErrorOnLoad = false; 2352 cal->mErrorOnLoad = false;
2353 if ( mCalendar->addCalendarFile( cal->mFileName, cal->mCalNumber )) { 2353 if ( mCalendar->addCalendarFile( cal->mFileName, cal->mCalNumber )) {
2354 cal->mLoadDt = QDateTime::currentDateTime(); 2354 cal->mLoadDt = QDateTime::currentDateTime();
2355 return true; 2355 return true;
2356 } 2356 }
2357 qDebug("KO: Error adding calendar file %s ",cal->mFileName.latin1() ); 2357 qDebug("KO: Error adding calendar file %s ",cal->mFileName.latin1() );
2358 cal->mErrorOnLoad = true; 2358 cal->mErrorOnLoad = true;
2359 return false; 2359 return false;
2360} 2360}
2361bool CalendarView::openCalendar(QString filename, bool merge) 2361bool CalendarView::openCalendar(QString filename, bool merge)
2362{ 2362{
2363 2363
2364 if (filename.isEmpty()) { 2364 if (filename.isEmpty()) {
2365 return false; 2365 return false;
2366 } 2366 }
2367 2367
2368 if (!QFile::exists(filename)) { 2368 if (!QFile::exists(filename)) {
2369 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename)); 2369 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename));
2370 return false; 2370 return false;
2371 } 2371 }
2372 2372
2373 globalFlagBlockAgenda = 1; 2373 globalFlagBlockAgenda = 1;
2374 clearAllViews(); 2374 clearAllViews();
2375 if (!merge) { 2375 if (!merge) {
2376 mViewManager->setDocumentId( filename ); 2376 mViewManager->setDocumentId( filename );
2377 mCalendar->close(); 2377 mCalendar->close();
2378 } 2378 }
2379 mStorage->setFileName( filename ); 2379 mStorage->setFileName( filename );
2380 2380
2381 if ( mStorage->load() ) { 2381 if ( mStorage->load() ) {
2382 if ( merge ) ;//setModified( true ); 2382 if ( merge ) ;//setModified( true );
2383 else { 2383 else {
2384 //setModified( true ); 2384 //setModified( true );
2385 mViewManager->setDocumentId( filename ); 2385 mViewManager->setDocumentId( filename );
2386 mDialogManager->setDocumentId( filename ); 2386 mDialogManager->setDocumentId( filename );
2387 mTodoList->setDocumentId( filename ); 2387 mTodoList->setDocumentId( filename );
2388 } 2388 }
2389 globalFlagBlockAgenda = 2; 2389 globalFlagBlockAgenda = 2;
2390 // if ( getLastSyncEvent() ) 2390 // if ( getLastSyncEvent() )
2391 // getLastSyncEvent()->setReadOnly( true ); 2391 // getLastSyncEvent()->setReadOnly( true );
2392 mCalendar->reInitAlarmSettings(); 2392 mCalendar->reInitAlarmSettings();
2393 setSyncEventsReadOnly(); 2393 setSyncEventsReadOnly();
2394 updateUnmanagedViews(); 2394 updateUnmanagedViews();
2395 updateView(); 2395 updateView();
2396 if ( filename != MainWindow::defaultFileName() ) { 2396 if ( filename != MainWindow::defaultFileName() ) {
2397 saveCalendar( MainWindow::defaultFileName() ); 2397 saveCalendar( MainWindow::defaultFileName() );
2398 } else { 2398 } else {
2399 QFileInfo finf ( MainWindow::defaultFileName()); 2399 QFileInfo finf ( MainWindow::defaultFileName());
2400 if ( finf.exists() ) { 2400 if ( finf.exists() ) {
2401 setLoadedFileVersion( finf.lastModified () ); 2401 setLoadedFileVersion( finf.lastModified () );
2402 } 2402 }
2403 } 2403 }
2404 return true; 2404 return true;
2405 } else { 2405 } else {
2406 // while failing to load, the calendar object could 2406 // while failing to load, the calendar object could
2407 // have become partially populated. Clear it out. 2407 // have become partially populated. Clear it out.
2408 if ( !merge ) { 2408 if ( !merge ) {
2409 mCalendar->close(); 2409 mCalendar->close();
2410 mViewManager->setDocumentId( filename ); 2410 mViewManager->setDocumentId( filename );
2411 mDialogManager->setDocumentId( filename ); 2411 mDialogManager->setDocumentId( filename );
2412 mTodoList->setDocumentId( filename ); 2412 mTodoList->setDocumentId( filename );
2413 } 2413 }
2414 2414
2415 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename)); 2415 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename));
2416 2416
2417 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) ); 2417 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) );
2418 globalFlagBlockAgenda = 2; 2418 globalFlagBlockAgenda = 2;
2419 mCalendar->reInitAlarmSettings(); 2419 mCalendar->reInitAlarmSettings();
2420 setSyncEventsReadOnly(); 2420 setSyncEventsReadOnly();
2421 updateUnmanagedViews(); 2421 updateUnmanagedViews();
2422 updateView(); 2422 updateView();
2423 } 2423 }
2424 return false; 2424 return false;
2425} 2425}
2426void CalendarView::mergeFile( QString fn ) 2426void CalendarView::mergeFile( QString fn )
2427{ 2427{
2428 clearAllViews(); 2428 clearAllViews();
2429 mCalendar->mergeCalendarFile( fn ); 2429 mCalendar->mergeCalendarFile( fn );
2430 mCalendar->reInitAlarmSettings(); 2430 mCalendar->reInitAlarmSettings();
2431 setSyncEventsReadOnly(); 2431 setSyncEventsReadOnly();
2432 updateUnmanagedViews(); 2432 updateUnmanagedViews();
2433 updateView(); 2433 updateView();
2434} 2434}
2435void CalendarView::showOpenError() 2435void CalendarView::showOpenError()
2436{ 2436{
2437 KMessageBox::error(this,i18n("Couldn't load calendar\n.")); 2437 KMessageBox::error(this,i18n("Couldn't load calendar\n."));
2438} 2438}
2439void CalendarView::setLoadedFileVersion(QDateTime dt) 2439void CalendarView::setLoadedFileVersion(QDateTime dt)
2440{ 2440{
2441 loadedFileVersion = dt; 2441 loadedFileVersion = dt;
2442} 2442}
2443bool CalendarView::checkFileChanged(QString fn) 2443bool CalendarView::checkFileChanged(QString fn)
2444{ 2444{
2445 QFileInfo finf ( fn ); 2445 QFileInfo finf ( fn );
2446 if ( !finf.exists() ) 2446 if ( !finf.exists() )
2447 return true; 2447 return true;
2448 QDateTime dt = finf.lastModified (); 2448 QDateTime dt = finf.lastModified ();
2449 if ( dt <= loadedFileVersion ) 2449 if ( dt <= loadedFileVersion )
2450 return false; 2450 return false;
2451 return true; 2451 return true;
2452 2452
2453} 2453}
2454void CalendarView::watchSavedFile() 2454void CalendarView::watchSavedFile()
2455{ 2455{
2456 QFileInfo finf ( MainWindow::defaultFileName()); 2456 QFileInfo finf ( MainWindow::defaultFileName());
2457 if ( !finf.exists() ) 2457 if ( !finf.exists() )
2458 return; 2458 return;
2459 QDateTime dt = finf.lastModified (); 2459 QDateTime dt = finf.lastModified ();
2460 if ( dt < loadedFileVersion ) { 2460 if ( dt < loadedFileVersion ) {
2461 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1()); 2461 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1());
2462 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) ); 2462 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) );
2463 return; 2463 return;
2464 } 2464 }
2465 loadedFileVersion = dt; 2465 loadedFileVersion = dt;
2466} 2466}
2467bool CalendarView::checkAllFileVersions() 2467bool CalendarView::checkAllFileVersions()
2468{ 2468{
2469 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2469 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
2470 KopiCalendarFile * cal = calendars.first(); 2470 KopiCalendarFile * cal = calendars.first();
2471 mCalendar->setDefaultCalendar( 1 ); 2471 mCalendar->setDefaultCalendar( 1 );
2472 mCalendar->setDefaultCalendarEnabledOnly(); 2472 mCalendar->setDefaultCalendarEnabledOnly();
2473 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { 2473 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) {
2474 if ( !checkFileVersion(MainWindow::defaultFileName())) { 2474 if ( !checkFileVersion(MainWindow::defaultFileName())) {
2475 restoreCalendarSettings(); 2475 restoreCalendarSettings();
2476 return false; 2476 return false;
2477 } 2477 }
2478 } 2478 }
2479 cal = calendars.next(); 2479 cal = calendars.next();
2480 QDateTime storeTemp = loadedFileVersion; 2480 QDateTime storeTemp = loadedFileVersion;
2481 while ( cal ) { 2481 while ( cal ) {
2482 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { 2482 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) {
2483 mCalendar->setDefaultCalendar( cal->mCalNumber ); 2483 mCalendar->setDefaultCalendar( cal->mCalNumber );
2484 mCalendar->setDefaultCalendarEnabledOnly(); 2484 mCalendar->setDefaultCalendarEnabledOnly();
2485 loadedFileVersion = cal->mLoadDt.addSecs( 15 ); 2485 loadedFileVersion = cal->mLoadDt.addSecs( 15 );
2486 if ( !checkFileVersion(cal->mFileName )) { 2486 if ( !checkFileVersion(cal->mFileName )) {
2487 loadedFileVersion = storeTemp; 2487 loadedFileVersion = storeTemp;
2488 restoreCalendarSettings(); 2488 restoreCalendarSettings();
2489 return false; 2489 return false;
2490 } 2490 }
2491 } 2491 }
2492 cal = calendars.next(); 2492 cal = calendars.next();
2493 } 2493 }
2494 loadedFileVersion = storeTemp; 2494 loadedFileVersion = storeTemp;
2495 return true; 2495 return true;
2496} 2496}
2497bool CalendarView::checkFileVersion(QString fn) 2497bool CalendarView::checkFileVersion(QString fn)
2498{ 2498{
2499 QFileInfo finf ( fn ); 2499 QFileInfo finf ( fn );
2500 if ( !finf.exists() ) 2500 if ( !finf.exists() )
2501 return true; 2501 return true;
2502 QDateTime dt = finf.lastModified (); 2502 QDateTime dt = finf.lastModified ();
2503 qDebug("loaded file version %s %s", fn.latin1(), loadedFileVersion.toString().latin1()); 2503 qDebug("loaded file version %s %s", fn.latin1(), loadedFileVersion.toString().latin1());
2504 qDebug("file on disk version %s %s", fn.latin1(),dt.toString().latin1()); 2504 qDebug("file on disk version %s %s", fn.latin1(),dt.toString().latin1());
2505 if ( dt <= loadedFileVersion ) 2505 if ( dt <= loadedFileVersion )
2506 return true; 2506 return true;
2507 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file\n%1\non disk has changed!\nFile size: %2 bytes.\nLast modified: %3\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg(KGlobal::formatMessage(fn,0)).arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) , 2507 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file\n%1\non disk has changed!\nFile size: %2 bytes.\nLast modified: %3\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg(KGlobal::formatMessage(fn,0)).arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) ,
2508 i18n("KO/Pi Warning"),i18n("Overwrite"), 2508 i18n("KO/Pi Warning"),i18n("Overwrite"),
2509 i18n("Sync+save")); 2509 i18n("Sync+save"));
2510 2510
2511 if ( km == KMessageBox::Cancel ) 2511 if ( km == KMessageBox::Cancel )
2512 return false; 2512 return false;
2513 if ( km == KMessageBox::Yes ) 2513 if ( km == KMessageBox::Yes )
2514 return true; 2514 return true;
2515 2515
2516 setSyncDevice("deleteaftersync" ); 2516 setSyncDevice("deleteaftersync" );
2517 mSyncManager->mAskForPreferences = true; 2517 mSyncManager->mAskForPreferences = true;
2518 mSyncManager->mSyncAlgoPrefs = 3; 2518 mSyncManager->mSyncAlgoPrefs = 3;
2519 mSyncManager->mWriteBackFile = false; 2519 mSyncManager->mWriteBackFile = false;
2520 mSyncManager->mWriteBackExistingOnly = false; 2520 mSyncManager->mWriteBackExistingOnly = false;
2521 mSyncManager->mShowSyncSummary = false; 2521 mSyncManager->mShowSyncSummary = false;
2522 syncCalendar( fn, 3 ); 2522 syncCalendar( fn, 3 );
2523 Event * e = getLastSyncEvent(); 2523 Event * e = getLastSyncEvent();
2524 if ( e ) 2524 if ( e )
2525 mCalendar->deleteEvent( e ); 2525 mCalendar->deleteEvent( e );
2526 return true; 2526 return true;
2527} 2527}
2528bool CalendarView::saveCalendars() 2528bool CalendarView::saveCalendars()
2529{ 2529{
2530 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2530 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
2531 KopiCalendarFile * cal = calendars.first(); 2531 KopiCalendarFile * cal = calendars.first();
2532 mCalendar->setDefaultCalendar( 1 ); 2532 mCalendar->setDefaultCalendar( 1 );
2533 mCalendar->setDefaultCalendarEnabledOnly(); 2533 mCalendar->setDefaultCalendarEnabledOnly();
2534 QString saveError; 2534 QString saveError;
2535 if ( !saveCalendar( MainWindow::defaultFileName() ) ) 2535 if ( !saveCalendar( MainWindow::defaultFileName() ) )
2536 saveError = cal->mName +"\n"; 2536 saveError = cal->mName +"\n";
2537 cal = calendars.next(); 2537 cal = calendars.next();
2538 while ( cal ) { 2538 while ( cal ) {
2539 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { 2539 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) {
2540 mCalendar->setDefaultCalendar( cal->mCalNumber ); 2540 mCalendar->setDefaultCalendar( cal->mCalNumber );
2541 mCalendar->setDefaultCalendarEnabledOnly(); 2541 mCalendar->setDefaultCalendarEnabledOnly();
2542 if ( saveCalendar( cal->mFileName ) ) 2542 if ( saveCalendar( cal->mFileName ) )
2543 cal->mLoadDt = QDateTime::currentDateTime(); 2543 cal->mLoadDt = QDateTime::currentDateTime();
2544 else 2544 else
2545 saveError += cal->mName + "\n"; 2545 saveError += cal->mName + "\n";
2546 } 2546 }
2547 cal = calendars.next(); 2547 cal = calendars.next();
2548 } 2548 }
2549 restoreCalendarSettings(); 2549 restoreCalendarSettings();
2550 if ( !saveError.isEmpty() ) { 2550 if ( !saveError.isEmpty() ) {
2551 saveError = KGlobal::formatMessage( i18n("Calendar(s) not saved:"),0 )+"\n" + saveError; 2551 saveError = KGlobal::formatMessage( i18n("Calendar(s) not saved:"),0 )+"\n" + saveError;
2552 KMessageBox::error(this, saveError, i18n("Error saving data")); 2552 KMessageBox::error(this, saveError, i18n("Error saving data"));
2553 return false; 2553 return false;
2554 } 2554 }
2555 return true; 2555 return true;
2556} 2556}
2557bool CalendarView::saveCalendar( QString filename ) 2557bool CalendarView::saveCalendar( QString filename )
2558{ 2558{
2559 2559
2560 // Store back all unsaved data into calendar object 2560 // Store back all unsaved data into calendar object
2561 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() ); 2561 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() );
2562 if ( mViewManager->currentView() ) 2562 if ( mViewManager->currentView() )
2563 mViewManager->currentView()->flushView(); 2563 mViewManager->currentView()->flushView();
2564 2564
2565 2565
2566 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2); 2566 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2);
2567 mStorage->setSaveFormat( new ICalFormat() ); 2567 mStorage->setSaveFormat( new ICalFormat() );
2568 mStorage->setFileName( filename ); 2568 mStorage->setFileName( filename );
2569 bool success; 2569 bool success;
2570 success = mStorage->save(); 2570 success = mStorage->save();
2571 if ( !success ) { 2571 if ( !success ) {
2572 return false; 2572 return false;
2573 } 2573 }
2574 if ( filename == MainWindow::defaultFileName() ) { 2574 if ( filename == MainWindow::defaultFileName() ) {
2575 setLoadedFileVersion( lfv ); 2575 setLoadedFileVersion( lfv );
2576 watchSavedFile(); 2576 watchSavedFile();
2577 } 2577 }
2578 return true; 2578 return true;
2579} 2579}
2580 2580
2581void CalendarView::closeCalendar() 2581void CalendarView::closeCalendar()
2582{ 2582{
2583 2583
2584 // child windows no longer valid 2584 // child windows no longer valid
2585 clearAllViews(); 2585 clearAllViews();
2586 emit closingDown(); 2586 emit closingDown();
2587 2587
2588 mCalendar->close(); 2588 mCalendar->close();
2589 setModified(false); 2589 setModified(false);
2590 updateView(); 2590 updateView();
2591} 2591}
2592 2592
2593void CalendarView::archiveCalendar() 2593void CalendarView::archiveCalendar()
2594{ 2594{
2595 mDialogManager->showArchiveDialog(); 2595 mDialogManager->showArchiveDialog();
2596} 2596}
2597 2597
2598 2598
2599void CalendarView::readSettings() 2599void CalendarView::readSettings()
2600{ 2600{
2601 2601
2602 2602
2603 // mViewManager->showAgendaView(); 2603 // mViewManager->showAgendaView();
2604 QString str; 2604 QString str;
2605 //qDebug("CalendarView::readSettings() "); 2605 //qDebug("CalendarView::readSettings() ");
2606 // read settings from the KConfig, supplying reasonable 2606 // read settings from the KConfig, supplying reasonable
2607 // defaults where none are to be found 2607 // defaults where none are to be found
2608 KConfig *config = KOGlobals::config(); 2608 KConfig *config = KOGlobals::config();
2609#ifndef KORG_NOSPLITTER 2609#ifndef KORG_NOSPLITTER
2610 config->setGroup("KOrganizer Geometry"); 2610 config->setGroup("KOrganizer Geometry");
2611 2611
2612 QValueList<int> sizes = config->readIntListEntry("Separator1"); 2612 QValueList<int> sizes = config->readIntListEntry("Separator1");
2613 if (sizes.count() != 2) { 2613 if (sizes.count() != 2) {
2614 sizes << mDateNavigator->minimumSizeHint().width(); 2614 sizes << mDateNavigator->minimumSizeHint().width();
2615 sizes << 300; 2615 sizes << 300;
2616 } 2616 }
2617 mPanner->setSizes(sizes); 2617 mPanner->setSizes(sizes);
2618 2618
2619 sizes = config->readIntListEntry("Separator2"); 2619 sizes = config->readIntListEntry("Separator2");
2620 if ( ( mResourceView && sizes.count() == 4 ) || 2620 if ( ( mResourceView && sizes.count() == 4 ) ||
2621 ( !mResourceView && sizes.count() == 3 ) ) { 2621 ( !mResourceView && sizes.count() == 3 ) ) {
2622 mLeftSplitter->setSizes(sizes); 2622 mLeftSplitter->setSizes(sizes);
2623 } 2623 }
2624#endif 2624#endif
2625 globalFlagBlockAgenda = 1; 2625 globalFlagBlockAgenda = 1;
2626 mViewManager->showAgendaView(); 2626 mViewManager->showAgendaView();
2627 //mViewManager->readSettings( config ); 2627 //mViewManager->readSettings( config );
2628 mTodoList->restoreLayout(config,QString("Todo Layout")); 2628 mTodoList->restoreLayout(config,QString("Todo Layout"));
2629 readFilterSettings(config); 2629 readFilterSettings(config);
2630 2630
2631#ifdef DESKTOP_VERSION 2631#ifdef DESKTOP_VERSION
2632 config->setGroup("WidgetLayout"); 2632 config->setGroup("WidgetLayout");
2633 QStringList list; 2633 QStringList list;
2634 list = config->readListEntry("MainLayout"); 2634 list = config->readListEntry("MainLayout");
2635 int x,y,w,h; 2635 int x,y,w,h;
2636 if ( ! list.isEmpty() ) { 2636 if ( ! list.isEmpty() ) {
2637 x = list[0].toInt(); 2637 x = list[0].toInt();
2638 y = list[1].toInt(); 2638 y = list[1].toInt();
2639 w = list[2].toInt(); 2639 w = list[2].toInt();
2640 h = list[3].toInt(); 2640 h = list[3].toInt();
2641 KApplication::testCoords( &x,&y,&w,&h ); 2641 KApplication::testCoords( &x,&y,&w,&h );
2642 topLevelWidget()->setGeometry(x,y,w,h); 2642 topLevelWidget()->setGeometry(x,y,w,h);
2643 2643
2644 } else { 2644 } else {
2645 topLevelWidget()->setGeometry( 40 ,40 , 640, 440); 2645 topLevelWidget()->setGeometry( 40 ,40 , 640, 440);
2646 } 2646 }
2647 list = config->readListEntry("EditEventLayout"); 2647 list = config->readListEntry("EditEventLayout");
2648 if ( ! list.isEmpty() ) { 2648 if ( ! list.isEmpty() ) {
2649 x = list[0].toInt(); 2649 x = list[0].toInt();
2650 y = list[1].toInt(); 2650 y = list[1].toInt();
2651 w = list[2].toInt(); 2651 w = list[2].toInt();
2652 h = list[3].toInt(); 2652 h = list[3].toInt();
2653 KApplication::testCoords( &x,&y,&w,&h ); 2653 KApplication::testCoords( &x,&y,&w,&h );
2654 mEventEditor->setGeometry(x,y,w,h); 2654 mEventEditor->setGeometry(x,y,w,h);
2655 2655
2656 } 2656 }
2657 list = config->readListEntry("EditTodoLayout"); 2657 list = config->readListEntry("EditTodoLayout");
2658 if ( ! list.isEmpty() ) { 2658 if ( ! list.isEmpty() ) {
2659 x = list[0].toInt(); 2659 x = list[0].toInt();
2660 y = list[1].toInt(); 2660 y = list[1].toInt();
2661 w = list[2].toInt(); 2661 w = list[2].toInt();
2662 h = list[3].toInt(); 2662 h = list[3].toInt();
2663 KApplication::testCoords( &x,&y,&w,&h ); 2663 KApplication::testCoords( &x,&y,&w,&h );
2664 mTodoEditor->setGeometry(x,y,w,h); 2664 mTodoEditor->setGeometry(x,y,w,h);
2665 2665
2666 } 2666 }
2667 list = config->readListEntry("ViewerLayout"); 2667 list = config->readListEntry("ViewerLayout");
2668 if ( ! list.isEmpty() ) { 2668 if ( ! list.isEmpty() ) {
2669 x = list[0].toInt(); 2669 x = list[0].toInt();
2670 y = list[1].toInt(); 2670 y = list[1].toInt();
2671 w = list[2].toInt(); 2671 w = list[2].toInt();
2672 h = list[3].toInt(); 2672 h = list[3].toInt();
2673 KApplication::testCoords( &x,&y,&w,&h ); 2673 KApplication::testCoords( &x,&y,&w,&h );
2674 getEventViewerDialog()->setGeometry(x,y,w,h); 2674 getEventViewerDialog()->setGeometry(x,y,w,h);
2675 } 2675 }
2676#endif 2676#endif
2677 config->setGroup( "Views" ); 2677 config->setGroup( "Views" );
2678 int dateCount = config->readNumEntry( "ShownDatesCount", 7 ); 2678 int dateCount = config->readNumEntry( "ShownDatesCount", 7 );
2679 2679
2680 QValueList<int> sizes = config->readIntListEntry("Left Splitter Frame"); 2680 QValueList<int> sizes = config->readIntListEntry("Left Splitter Frame");
2681 2681
2682 int resetval = 0; 2682 int resetval = 0;
2683 int maxVal = 0; 2683 int maxVal = 0;
2684 if (sizes.count() != 3) { 2684 if (sizes.count() != 3) {
2685 if ( KOPrefs::instance()->mVerticalScreen ) { 2685 if ( KOPrefs::instance()->mVerticalScreen ) {
2686 resetval = mDateNavigator->sizeHint().width()+2; 2686 resetval = mDateNavigator->sizeHint().width()+2;
2687 } else { 2687 } else {
2688 resetval = mDateNavigator->sizeHint().height()+2; 2688 resetval = mDateNavigator->sizeHint().height()+2;
2689 } 2689 }
2690 } 2690 }
2691 if ( resetval ) { 2691 if ( resetval ) {
2692 sizes.clear(); 2692 sizes.clear();
2693 if ( KOPrefs::instance()->mVerticalScreen ) { 2693 if ( KOPrefs::instance()->mVerticalScreen ) {
2694 maxVal = QApplication::desktop()->width() -10; 2694 maxVal = QApplication::desktop()->width() -10;
2695 } else { 2695 } else {
2696 maxVal = QApplication::desktop()->height()-10; 2696 maxVal = QApplication::desktop()->height()-10;
2697 } 2697 }
2698 sizes << resetval; 2698 sizes << resetval;
2699 if ( maxVal < resetval + resetval) 2699 if ( maxVal < resetval + resetval)
2700 resetval = maxVal - resetval; 2700 resetval = maxVal - resetval;
2701 sizes << resetval; 2701 sizes << resetval;
2702 sizes << 100; 2702 sizes << 100;
2703 } 2703 }
2704 mLeftFrame->setSizes(sizes); 2704 mLeftFrame->setSizes(sizes);
2705 sizes = config->readIntListEntry("Main Splitter Frame"); 2705 sizes = config->readIntListEntry("Main Splitter Frame");
2706 resetval = 0; 2706 resetval = 0;
2707 maxVal = 0; 2707 maxVal = 0;
2708 if (sizes.count() != 2) { 2708 if (sizes.count() != 2) {
2709 if ( !KOPrefs::instance()->mVerticalScreen ) { 2709 if ( !KOPrefs::instance()->mVerticalScreen ) {
2710 resetval = mDateNavigator->sizeHint().width()+2; 2710 resetval = mDateNavigator->sizeHint().width()+2;
2711 } else { 2711 } else {
2712 resetval = mDateNavigator->sizeHint().height()+2; 2712 resetval = mDateNavigator->sizeHint().height()+2;
2713 } 2713 }
2714 } 2714 }
2715 if ( resetval ) { 2715 if ( resetval ) {
2716 sizes.clear(); 2716 sizes.clear();
2717 if ( !KOPrefs::instance()->mVerticalScreen ) { 2717 if ( !KOPrefs::instance()->mVerticalScreen ) {
2718 maxVal = QApplication::desktop()->width() -10; 2718 maxVal = QApplication::desktop()->width() -10;
2719 } else { 2719 } else {
2720 maxVal = QApplication::desktop()->height()-10; 2720 maxVal = QApplication::desktop()->height()-10;
2721 } 2721 }
2722 sizes << resetval; 2722 sizes << resetval;
2723 if ( maxVal < resetval + resetval) 2723 if ( maxVal < resetval + resetval)
2724 resetval = maxVal - resetval; 2724 resetval = maxVal - resetval;
2725 sizes << resetval; 2725 sizes << resetval;
2726 } 2726 }
2727 mMainFrame->setSizes(sizes); 2727 mMainFrame->setSizes(sizes);
2728 if ( dateCount == 5 ) mNavigator->selectWorkWeek(); 2728 if ( dateCount == 5 ) mNavigator->selectWorkWeek();
2729 else if ( dateCount == 7 ) mNavigator->selectWeek(); 2729 else if ( dateCount == 7 ) mNavigator->selectWeek();
2730 else mNavigator->selectDates( dateCount ); 2730 else mNavigator->selectDates( dateCount );
2731 // mViewManager->readSettings( config ); 2731 // mViewManager->readSettings( config );
2732 updateConfig(); 2732 updateConfig();
2733 globalFlagBlockAgenda = 2; 2733 globalFlagBlockAgenda = 2;
2734 mViewManager->readSettings( config ); 2734 mViewManager->readSettings( config );
2735 QTimer::singleShot( 1, mDateNavigator, SLOT ( setResizeEnabled() ) ); 2735 QTimer::singleShot( 1, mDateNavigator, SLOT ( setResizeEnabled() ) );
2736} 2736}
2737 2737
2738void CalendarView::checkSuspendAlarm() 2738void CalendarView::checkSuspendAlarm()
2739{ 2739{
2740 if ( mSuspendTimer->isActive() ) { 2740 if ( mSuspendTimer->isActive() ) {
2741 KMessageBox::information( this, i18n("<b>WARNING:</b> There is a pending suspended alarm!"), i18n("Pending Suspend Alarm")); 2741 KMessageBox::information( this, i18n("<b>WARNING:</b> There is a pending suspended alarm!"), i18n("Pending Suspend Alarm"));
2742 } 2742 }
2743} 2743}
2744void CalendarView::writeSettings() 2744void CalendarView::writeSettings()
2745{ 2745{
2746 // kdDebug() << "CalendarView::writeSettings" << endl; 2746 // kdDebug() << "CalendarView::writeSettings" << endl;
2747 2747
2748 KConfig *config = KOGlobals::config(); 2748 KConfig *config = KOGlobals::config();
2749 2749
2750 mViewManager->writeSettings( config ); 2750 mViewManager->writeSettings( config );
2751 mTodoList->saveLayout(config,QString("Todo Layout")); 2751 mTodoList->saveLayout(config,QString("Todo Layout"));
2752 mDialogManager->writeSettings( config ); 2752 mDialogManager->writeSettings( config );
2753 //KOPrefs::instance()->usrWriteConfig(); 2753 //KOPrefs::instance()->usrWriteConfig();
2754 KOPrefs::instance()->writeConfig(); 2754 KOPrefs::instance()->writeConfig();
2755 2755
2756 writeFilterSettings(config); 2756 writeFilterSettings(config);
2757 config->setGroup( "AppRun" ); 2757 config->setGroup( "AppRun" );
2758 QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) ); 2758 QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) );
2759 int days = dt.daysTo( QDate::currentDate() ); 2759 int days = dt.daysTo( QDate::currentDate() );
2760 dt = dt.addDays( days ); 2760 dt = dt.addDays( days );
2761 int secs = dt.secsTo( QDateTime::currentDateTime() ); 2761 int secs = dt.secsTo( QDateTime::currentDateTime() );
2762 config->writeEntry( "LatestProgramStopDays", days ); 2762 config->writeEntry( "LatestProgramStopDays", days );
2763 config->writeEntry( "LatestProgramStopSecs", secs ); 2763 config->writeEntry( "LatestProgramStopSecs", secs );
2764 //qDebug("KO: Writing stop time: %d ", secs); 2764 //qDebug("KO: Writing stop time: %d ", secs);
2765 //qDebug("KO: Current Time %s ",QDateTime::currentDateTime().toString().latin1() ); 2765 //qDebug("KO: Current Time %s ",QDateTime::currentDateTime().toString().latin1() );
2766 //QDateTime latest = dt.addSecs ( secs ); 2766 //QDateTime latest = dt.addSecs ( secs );
2767 //qDebug("KO: Termination on %s ", latest.toString().latin1()); 2767 //qDebug("KO: Termination on %s ", latest.toString().latin1());
2768 config->setGroup( "Views" ); 2768 config->setGroup( "Views" );
2769 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() ); 2769 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() );
2770 2770
2771#if 0 2771#if 0
2772 qDebug("********************* "); 2772 qDebug("********************* ");
2773 qDebug("Testcode secsto "); 2773 qDebug("Testcode secsto ");
2774 QDateTime dt_nodaylight ( QDate (2005,3,26), QTime( 0,0,0 ) ); 2774 QDateTime dt_nodaylight ( QDate (2005,3,26), QTime( 0,0,0 ) );
2775 QDateTime dt_daylight ( QDate (2005,3,29), QTime( 0,0,0 ) ); 2775 QDateTime dt_daylight ( QDate (2005,3,29), QTime( 0,0,0 ) );
2776 int secsto = dt_nodaylight.secsTo( dt_daylight ); 2776 int secsto = dt_nodaylight.secsTo( dt_daylight );
2777 QDateTime dt_daylight_wrong = dt_nodaylight.addSecs( secsto ); 2777 QDateTime dt_daylight_wrong = dt_nodaylight.addSecs( secsto );
2778 qDebug("dt nodaylight %s ",dt_nodaylight.toString().latin1() ); 2778 qDebug("dt nodaylight %s ",dt_nodaylight.toString().latin1() );
2779 qDebug("dt daylight %s ",dt_daylight.toString().latin1() ); 2779 qDebug("dt daylight %s ",dt_daylight.toString().latin1() );
2780 qDebug("dt daylight_wrong %s ",dt_daylight_wrong.toString().latin1() ); 2780 qDebug("dt daylight_wrong %s ",dt_daylight_wrong.toString().latin1() );
2781 qDebug("Computed secsTo %d . in minutes: %d . in hours: %d ", secsto, secsto/60, secsto/3600); 2781 qDebug("Computed secsTo %d . in minutes: %d . in hours: %d ", secsto, secsto/60, secsto/3600);
2782 qDebug("********************* testcode end"); 2782 qDebug("********************* testcode end");
2783 2783
2784#endif 2784#endif
2785 2785
2786 QValueList<int> listINT = mLeftFrame->sizes(); 2786 QValueList<int> listINT = mLeftFrame->sizes();
2787 config->writeEntry("Left Splitter Frame",listINT); 2787 config->writeEntry("Left Splitter Frame",listINT);
2788 QValueList<int> listINT2 = mMainFrame->sizes(); 2788 QValueList<int> listINT2 = mMainFrame->sizes();
2789 config->writeEntry("Main Splitter Frame",listINT2); 2789 config->writeEntry("Main Splitter Frame",listINT2);
2790#ifdef DESKTOP_VERSION 2790#ifdef DESKTOP_VERSION
2791 config->setGroup("WidgetLayout"); 2791 config->setGroup("WidgetLayout");
2792 QStringList list ;//= config->readListEntry("MainLayout"); 2792 QStringList list ;//= config->readListEntry("MainLayout");
2793 int x,y,w,h; 2793 int x,y,w,h;
2794 QWidget* wid; 2794 QWidget* wid;
2795 wid = topLevelWidget(); 2795 wid = topLevelWidget();
2796 x = wid->geometry().x(); 2796 x = wid->geometry().x();
2797 y = wid->geometry().y(); 2797 y = wid->geometry().y();
2798 w = wid->width(); 2798 w = wid->width();
2799 h = wid->height(); 2799 h = wid->height();
2800 list.clear(); 2800 list.clear();
2801 list << QString::number( x ); 2801 list << QString::number( x );
2802 list << QString::number( y ); 2802 list << QString::number( y );
2803 list << QString::number( w ); 2803 list << QString::number( w );
2804 list << QString::number( h ); 2804 list << QString::number( h );
2805 config->writeEntry("MainLayout",list ); 2805 config->writeEntry("MainLayout",list );
2806 2806
2807 wid = mEventEditor; 2807 wid = mEventEditor;
2808 x = wid->geometry().x(); 2808 x = wid->geometry().x();
2809 y = wid->geometry().y(); 2809 y = wid->geometry().y();
2810 w = wid->width(); 2810 w = wid->width();
2811 h = wid->height(); 2811 h = wid->height();
2812 list.clear(); 2812 list.clear();
2813 list << QString::number( x ); 2813 list << QString::number( x );
2814 list << QString::number( y ); 2814 list << QString::number( y );
2815 list << QString::number( w ); 2815 list << QString::number( w );
2816 list << QString::number( h ); 2816 list << QString::number( h );
2817 config->writeEntry("EditEventLayout",list ); 2817 config->writeEntry("EditEventLayout",list );
2818 2818
2819 wid = mTodoEditor; 2819 wid = mTodoEditor;
2820 x = wid->geometry().x(); 2820 x = wid->geometry().x();
2821 y = wid->geometry().y(); 2821 y = wid->geometry().y();
2822 w = wid->width(); 2822 w = wid->width();
2823 h = wid->height(); 2823 h = wid->height();
2824 list.clear(); 2824 list.clear();
2825 list << QString::number( x ); 2825 list << QString::number( x );
2826 list << QString::number( y ); 2826 list << QString::number( y );
2827 list << QString::number( w ); 2827 list << QString::number( w );
2828 list << QString::number( h ); 2828 list << QString::number( h );
2829 config->writeEntry("EditTodoLayout",list ); 2829 config->writeEntry("EditTodoLayout",list );
2830 wid = getEventViewerDialog(); 2830 wid = getEventViewerDialog();
2831 x = wid->geometry().x(); 2831 x = wid->geometry().x();
2832 y = wid->geometry().y(); 2832 y = wid->geometry().y();
2833 w = wid->width(); 2833 w = wid->width();
2834 h = wid->height(); 2834 h = wid->height();
2835 list.clear(); 2835 list.clear();
2836 list << QString::number( x ); 2836 list << QString::number( x );
2837 list << QString::number( y ); 2837 list << QString::number( y );
2838 list << QString::number( w ); 2838 list << QString::number( w );
2839 list << QString::number( h ); 2839 list << QString::number( h );
2840 config->writeEntry("ViewerLayout",list ); 2840 config->writeEntry("ViewerLayout",list );
2841 wid = mDialogManager->getSearchDialog(); 2841 wid = mDialogManager->getSearchDialog();
2842 if ( wid ) { 2842 if ( wid ) {
2843 x = wid->geometry().x(); 2843 x = wid->geometry().x();
2844 y = wid->geometry().y(); 2844 y = wid->geometry().y();
2845 w = wid->width(); 2845 w = wid->width();
2846 h = wid->height(); 2846 h = wid->height();
2847 list.clear(); 2847 list.clear();
2848 list << QString::number( x ); 2848 list << QString::number( x );
2849 list << QString::number( y ); 2849 list << QString::number( y );
2850 list << QString::number( w ); 2850 list << QString::number( w );
2851 list << QString::number( h ); 2851 list << QString::number( h );
2852 config->writeEntry("SearchLayout",list ); 2852 config->writeEntry("SearchLayout",list );
2853 } 2853 }
2854#endif 2854#endif
2855 2855
2856 2856
2857 config->sync(); 2857 config->sync();
2858} 2858}
2859 2859
2860void CalendarView::readFilterSettings(KConfig *config) 2860void CalendarView::readFilterSettings(KConfig *config)
2861{ 2861{
2862 // kdDebug() << "CalendarView::readFilterSettings()" << endl; 2862 // kdDebug() << "CalendarView::readFilterSettings()" << endl;
2863 2863
2864 mFilters.clear(); 2864 mFilters.clear();
2865 2865
2866 config->setGroup("General"); 2866 config->setGroup("General");
2867 QStringList filterList = config->readListEntry("CalendarFilters"); 2867 QStringList filterList = config->readListEntry("CalendarFilters");
2868 2868
2869 QStringList::ConstIterator it = filterList.begin(); 2869 QStringList::ConstIterator it = filterList.begin();
2870 QStringList::ConstIterator end = filterList.end(); 2870 QStringList::ConstIterator end = filterList.end();
2871 while(it != end) { 2871 while(it != end) {
2872 // kdDebug() << " filter: " << (*it) << endl; 2872 // kdDebug() << " filter: " << (*it) << endl;
2873 2873
2874 CalFilter *filter; 2874 CalFilter *filter;
2875 filter = new CalFilter(*it); 2875 filter = new CalFilter(*it);
2876 config->setGroup("Filter_" + (*it).utf8()); 2876 config->setGroup("Filter_" + (*it).utf8());
2877 //qDebug("readFilterSettings %d ",config->readNumEntry("Criteria",0) ); 2877 //qDebug("readFilterSettings %d ",config->readNumEntry("Criteria",0) );
2878 filter->setCriteria(config->readNumEntry("Criteria",0)); 2878 filter->setCriteria(config->readNumEntry("Criteria",0));
2879 filter->setCategoryList(config->readListEntry("CategoryList")); 2879 filter->setCategoryList(config->readListEntry("CategoryList"));
2880 mFilters.append(filter); 2880 mFilters.append(filter);
2881 2881
2882 ++it; 2882 ++it;
2883 } 2883 }
2884 2884
2885 if (mFilters.count() == 0) { 2885 if (mFilters.count() == 0) {
2886 CalFilter *filter = new CalFilter(i18n("Default")); 2886 CalFilter *filter = new CalFilter(i18n("Default"));
2887 mFilters.append(filter); 2887 mFilters.append(filter);
2888 } 2888 }
2889 mFilterView->updateFilters(); 2889 mFilterView->updateFilters();
2890 config->setGroup("FilterView"); 2890 config->setGroup("FilterView");
2891 2891
2892 mFilterView->blockSignals(true); 2892 mFilterView->blockSignals(true);
2893 mFilterView->setFiltersEnabled(config->readBoolEntry("FilterEnabled")); 2893 mFilterView->setFiltersEnabled(config->readBoolEntry("FilterEnabled"));
2894 mFilterView->setSelectedFilter(config->readEntry("Current Filter")); 2894 mFilterView->setSelectedFilter(config->readEntry("Current Filter"));
2895 mFilterView->blockSignals(false); 2895 mFilterView->blockSignals(false);
2896 // We do it manually to avoid it being done twice by the above calls 2896 // We do it manually to avoid it being done twice by the above calls
2897 updateFilter(); 2897 updateFilter();
2898} 2898}
2899 2899
2900void CalendarView::writeFilterSettings(KConfig *config) 2900void CalendarView::writeFilterSettings(KConfig *config)
2901{ 2901{
2902 // kdDebug() << "CalendarView::writeFilterSettings()" << endl; 2902 // kdDebug() << "CalendarView::writeFilterSettings()" << endl;
2903 2903
2904 QStringList filterList; 2904 QStringList filterList;
2905 2905
2906 CalFilter *filter = mFilters.first(); 2906 CalFilter *filter = mFilters.first();
2907 while(filter) { 2907 while(filter) {
2908 // kdDebug() << " fn: " << filter->name() << endl; 2908 // kdDebug() << " fn: " << filter->name() << endl;
2909 filterList << filter->name(); 2909 filterList << filter->name();
2910 config->setGroup("Filter_" + filter->name().utf8()); 2910 config->setGroup("Filter_" + filter->name().utf8());
2911 config->writeEntry("Criteria",filter->criteria()); 2911 config->writeEntry("Criteria",filter->criteria());
2912 config->writeEntry("CategoryList",filter->categoryList()); 2912 config->writeEntry("CategoryList",filter->categoryList());
2913 filter = mFilters.next(); 2913 filter = mFilters.next();
2914 } 2914 }
2915 config->setGroup("General"); 2915 config->setGroup("General");
2916 config->writeEntry("CalendarFilters",filterList); 2916 config->writeEntry("CalendarFilters",filterList);
2917 2917
2918 config->setGroup("FilterView"); 2918 config->setGroup("FilterView");
2919 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled()); 2919 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled());
2920 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name()); 2920 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name());
2921} 2921}
2922 2922
2923 2923
2924void CalendarView::goToday() 2924void CalendarView::goToday()
2925{ 2925{
2926 if ( mViewManager->currentView()->isMonthView() ) 2926 if ( mViewManager->currentView()->isMonthView() )
2927 mNavigator->selectTodayMonth(); 2927 mNavigator->selectTodayMonth();
2928 else 2928 else
2929 mNavigator->selectToday(); 2929 mNavigator->selectToday();
2930} 2930}
2931 2931
2932void CalendarView::goNext() 2932void CalendarView::goNext()
2933{ 2933{
2934 mNavigator->selectNext(); 2934 mNavigator->selectNext();
2935} 2935}
2936 2936
2937void CalendarView::goPrevious() 2937void CalendarView::goPrevious()
2938{ 2938{
2939 mNavigator->selectPrevious(); 2939 mNavigator->selectPrevious();
2940} 2940}
2941void CalendarView::goNextMonth() 2941void CalendarView::goNextMonth()
2942{ 2942{
2943 mNavigator->selectNextMonth(); 2943 mNavigator->selectNextMonth();
2944} 2944}
2945 2945
2946void CalendarView::goPreviousMonth() 2946void CalendarView::goPreviousMonth()
2947{ 2947{
2948 mNavigator->selectPreviousMonth(); 2948 mNavigator->selectPreviousMonth();
2949} 2949}
2950 2950
2951void CalendarView::updateConfig() 2951void CalendarView::updateConfig()
2952{ 2952{
2953 if ( KOPrefs::instance()->mUseAppColors ) 2953 if ( KOPrefs::instance()->mUseAppColors )
2954 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true ); 2954 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true );
2955 emit configChanged(); 2955 emit configChanged();
2956 mTodoList->updateConfig(); 2956 mTodoList->updateConfig();
2957 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont); 2957 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont);
2958 mCalendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 2958 mCalendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
2959 // To make the "fill window" configurations work 2959 // To make the "fill window" configurations work
2960 //mViewManager->raiseCurrentView(); 2960 //mViewManager->raiseCurrentView();
2961} 2961}
2962 2962
2963 2963
2964void CalendarView::eventChanged(Event *event) 2964void CalendarView::eventChanged(Event *event)
2965{ 2965{
2966 changeEventDisplay(event,KOGlobals::EVENTEDITED); 2966 changeEventDisplay(event,KOGlobals::EVENTEDITED);
2967 //updateUnmanagedViews(); 2967 //updateUnmanagedViews();
2968} 2968}
2969 2969
2970void CalendarView::eventAdded(Event *event) 2970void CalendarView::eventAdded(Event *event)
2971{ 2971{
2972 changeEventDisplay(event,KOGlobals::EVENTADDED); 2972 changeEventDisplay(event,KOGlobals::EVENTADDED);
2973} 2973}
2974 2974
2975void CalendarView::eventToBeDeleted(Event *) 2975void CalendarView::eventToBeDeleted(Event *)
2976{ 2976{
2977 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl; 2977 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl;
2978} 2978}
2979 2979
2980void CalendarView::eventDeleted() 2980void CalendarView::eventDeleted()
2981{ 2981{
2982 changeEventDisplay(0,KOGlobals::EVENTDELETED); 2982 changeEventDisplay(0,KOGlobals::EVENTDELETED);
2983} 2983}
2984void CalendarView::changeTodoDisplay(Todo *which, int action) 2984void CalendarView::changeTodoDisplay(Todo *which, int action)
2985{ 2985{
2986 changeIncidenceDisplay((Incidence *)which, action); 2986 changeIncidenceDisplay((Incidence *)which, action);
2987 mDateNavigator->updateView(); //LR 2987 mDateNavigator->updateView(); //LR
2988 //mDialogManager->updateSearchDialog(); 2988 //mDialogManager->updateSearchDialog();
2989 2989
2990 if (which) { 2990 if (which) {
2991 mViewManager->updateWNview(); 2991 mViewManager->updateWNview();
2992 //mTodoList->updateView(); 2992 //mTodoList->updateView();
2993 } 2993 }
2994 2994
2995} 2995}
2996 2996
2997void CalendarView::changeIncidenceDisplay(Incidence *which, int action) 2997void CalendarView::changeIncidenceDisplay(Incidence *which, int action)
2998{ 2998{
2999 updateUnmanagedViews(); 2999 updateUnmanagedViews();
3000 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action ); 3000 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action );
3001 if ( action == KOGlobals::EVENTDELETED ) { //delete 3001 if ( action == KOGlobals::EVENTDELETED ) { //delete
3002 mCalendar->checkAlarmForIncidence( 0, true ); 3002 mCalendar->checkAlarmForIncidence( 0, true );
3003 if ( mEventViewerDialog ) 3003 if ( mEventViewerDialog )
3004 mEventViewerDialog->hide(); 3004 mEventViewerDialog->hide();
3005 } 3005 }
3006 else 3006 else
3007 mCalendar->checkAlarmForIncidence( which , false ); 3007 mCalendar->checkAlarmForIncidence( which , false );
3008} 3008}
3009 3009
3010// most of the changeEventDisplays() right now just call the view's 3010// most of the changeEventDisplays() right now just call the view's
3011// total update mode, but they SHOULD be recoded to be more refresh-efficient. 3011// total update mode, but they SHOULD be recoded to be more refresh-efficient.
3012void CalendarView::changeEventDisplay(Event *which, int action) 3012void CalendarView::changeEventDisplay(Event *which, int action)
3013{ 3013{
3014 // kdDebug() << "CalendarView::changeEventDisplay" << endl; 3014 // kdDebug() << "CalendarView::changeEventDisplay" << endl;
3015 changeIncidenceDisplay((Incidence *)which, action); 3015 changeIncidenceDisplay((Incidence *)which, action);
3016 static bool clearallviews = false; 3016 static bool clearallviews = false;
3017 if ( KOPrefs::instance()->mGlobalUpdateDisabled ) { 3017 if ( KOPrefs::instance()->mGlobalUpdateDisabled ) {
3018 if ( clearallviews ) { 3018 if ( clearallviews ) {
3019 clearAllViews(); 3019 clearAllViews();
3020 clearallviews = false; 3020 clearallviews = false;
3021 } 3021 }
3022 return; 3022 return;
3023 } 3023 }
3024 clearallviews = true; 3024 clearallviews = true;
3025 mDateNavigator->updateView(); 3025 mDateNavigator->updateView();
3026 //mDialogManager->updateSearchDialog(); 3026 //mDialogManager->updateSearchDialog();
3027 if (which) { 3027 if (which) {
3028 // If there is an event view visible update the display 3028 // If there is an event view visible update the display
3029 mViewManager->currentView()->changeEventDisplay(which,action); 3029 mViewManager->currentView()->changeEventDisplay(which,action);
3030 // TODO: check, if update needed 3030 // TODO: check, if update needed
3031 // if (which->getTodoStatus()) { 3031 // if (which->getTodoStatus()) {
3032 mTodoList->updateView(); 3032 mTodoList->updateView();
3033 if ( action != KOGlobals::EVENTDELETED ) { 3033 if ( action != KOGlobals::EVENTDELETED && KOPrefs::instance()->mDetectConflicts ) {
3034 mConflictingEvent = which ; 3034 mConflictingEvent = which ;
3035 int time = 1000; 3035 int time = 1000;
3036#ifdef DESKTOP_VERSION 3036#ifdef DESKTOP_VERSION
3037 time = 500; 3037 time = 500;
3038#endif 3038#endif
3039 bool checkC = false; 3039 bool checkC = false;
3040 if ( mConflictingEvent->doesFloat() ) { 3040 if ( mConflictingEvent->doesFloat() ) {
3041 checkC = KOPrefs::instance()->mCheckConflictsAllDayAllDay 3041 checkC = KOPrefs::instance()->mCheckConflictsAllDayAllDay
3042 || KOPrefs::instance()->mCheckConflictsAllDayNonAD; 3042 || KOPrefs::instance()->mCheckConflictsAllDayNonAD;
3043 } else { 3043 } else {
3044 checkC = KOPrefs::instance()->mCheckConflictsNonADAllDay 3044 checkC = KOPrefs::instance()->mCheckConflictsNonADAllDay
3045 || KOPrefs::instance()->mCheckConflictsNonADNonAD; 3045 || KOPrefs::instance()->mCheckConflictsNonADNonAD;
3046 } 3046 }
3047 if ( checkC ) 3047 if ( checkC )
3048 QTimer::singleShot( time, this, SLOT ( checkConflictForEvent() ) ); 3048 QTimer::singleShot( time, this, SLOT ( checkConflictForEvent() ) );
3049 } 3049 }
3050 // } 3050 // }
3051 } else { 3051 } else {
3052 mViewManager->currentView()->updateView(); 3052 mViewManager->currentView()->updateView();
3053 } 3053 }
3054} 3054}
3055void CalendarView::checkConflictForEvent() 3055void CalendarView::checkConflictForEvent()
3056{ 3056{
3057 3057
3058 if (!KOPrefs::instance()->mConfirm) 3058 if (!KOPrefs::instance()->mConfirm)
3059 return; 3059 return;
3060 if ( ! mConflictingEvent ) return; 3060 if ( ! mConflictingEvent ) return;
3061 Event * conflictingEvent = mConflictingEvent; 3061 Event * conflictingEvent = mConflictingEvent;
3062 mConflictingEvent = 0; 3062 mConflictingEvent = 0;
3063 QDateTime current = QDateTime::currentDateTime(); 3063 QDateTime current = QDateTime::currentDateTime();
3064 if ( ! conflictingEvent->matchTime( &current, 0 ) ) { 3064 if ( ! conflictingEvent->matchTime( &current, 0 ) ) {
3065 return; 3065 return;
3066 } 3066 }
3067 CalFilter *filterIN = 0; 3067 CalFilter *filterIN = 0;
3068 CalFilter *filterALL = 0; 3068 CalFilter *filterALL = 0;
3069 CalFilter *filter = mFilters.first(); 3069 CalFilter *filter = mFilters.first();
3070 while(filter) { 3070 while(filter) {
3071 if ( filter->name() == KOPrefs::instance()->mFilterConflictEditItem) 3071 if ( filter->name() == KOPrefs::instance()->mFilterConflictEditItem)
3072 filterIN = filter; 3072 filterIN = filter;
3073 if ( filter->name() == KOPrefs::instance()->mFilterConflictAllItem ) 3073 if ( filter->name() == KOPrefs::instance()->mFilterConflictAllItem )
3074 filterALL = filter; 3074 filterALL = filter;
3075 filter = mFilters.next(); 3075 filter = mFilters.next();
3076 } 3076 }
3077 if ( filterIN ) { 3077 if ( filterIN ) {
3078 if ( !filterIN->filterCalendarItem( conflictingEvent ) ) { 3078 if ( !filterIN->filterCalendarItem( conflictingEvent ) ) {
3079 return; 3079 return;
3080 } 3080 }
3081 } 3081 }
3082 QPtrList<Event> testlist = mCalendar->events(); 3082 QPtrList<Event> testlist = mCalendar->events();
3083 Event * test = testlist.first(); 3083 Event * test = testlist.first();
3084 QDateTime conflict; 3084 QDateTime conflict;
3085 QDateTime retVal; 3085 QDateTime retVal;
3086 bool found = false; 3086 bool found = false;
3087 Event * cE = 0; 3087 Event * cE = 0;
3088 bool chAD = KOPrefs::instance()->mCheckConflictsAllDayAllDay; 3088 bool chAD = KOPrefs::instance()->mCheckConflictsAllDayAllDay;
3089 bool chNad = KOPrefs::instance()->mCheckConflictsAllDayNonAD; 3089 bool chNad = KOPrefs::instance()->mCheckConflictsAllDayNonAD;
3090 if ( !conflictingEvent->doesFloat() ) { 3090 if ( !conflictingEvent->doesFloat() ) {
3091 chAD = KOPrefs::instance()->mCheckConflictsNonADAllDay; 3091 chAD = KOPrefs::instance()->mCheckConflictsNonADAllDay;
3092 chNad = KOPrefs::instance()->mCheckConflictsNonADNonAD; 3092 chNad = KOPrefs::instance()->mCheckConflictsNonADNonAD;
3093 } 3093 }
3094 topLevelWidget()->setCaption( i18n("Checking conflicts ... please wait") ); 3094 topLevelWidget()->setCaption( i18n("Checking conflicts ... please wait") );
3095 while ( test ) { 3095 while ( test ) {
3096 qApp->processEvents(); 3096 qApp->processEvents();
3097 bool skip = ( test->doesFloat() && !chAD ) || ( !test->doesFloat() && !chNad ); 3097 bool skip = ( test->doesFloat() && !chAD ) || ( !test->doesFloat() && !chNad );
3098 if ( !skip ) { 3098 if ( !skip ) {
3099 if ( filterALL ) { 3099 if ( filterALL ) {
3100 if ( !filterALL->filterCalendarItem( test ) ) { 3100 if ( !filterALL->filterCalendarItem( test ) ) {
3101 skip = true; 3101 skip = true;
3102 } 3102 }
3103 } 3103 }
3104 if ( !skip ) { 3104 if ( !skip ) {
3105 if ( found ) 3105 if ( found )
3106 skip = !test->matchTime( &current, &conflict ); 3106 skip = !test->matchTime( &current, &conflict );
3107 else 3107 else
3108 skip = !test->matchTime( &current, 0 ); 3108 skip = !test->matchTime( &current, 0 );
3109 if ( !skip ) { 3109 if ( !skip ) {
3110 if ( conflictingEvent->isOverlapping ( test, &retVal, &current ) ) { 3110 if ( conflictingEvent->isOverlapping ( test, &retVal, &current ) ) {
3111 if ( ! found ) { 3111 if ( ! found ) {
3112 conflict = retVal; 3112 conflict = retVal;
3113 cE = test; 3113 cE = test;
3114 } else { 3114 } else {
3115 if ( retVal < conflict ) { 3115 if ( retVal < conflict ) {
3116 conflict = retVal; 3116 conflict = retVal;
3117 cE = test; 3117 cE = test;
3118 } 3118 }
3119 } 3119 }
3120 found = true; 3120 found = true;
3121 } 3121 }
3122 } 3122 }
3123 } 3123 }
3124 } 3124 }
3125 test = testlist.next(); 3125 test = testlist.next();
3126 } 3126 }
3127 topLevelWidget()->setCaption( i18n("KO/Pi") ); 3127 topLevelWidget()->setCaption( i18n("KO/Pi") );
3128 if ( found ) { 3128 if ( found ) {
3129 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()) ) ; 3129 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()) ) ;
3130 qApp->processEvents(); 3130 qApp->processEvents();
3131 int km = KMessageBox::warningContinueCancel(this,mess, 3131 int km = KMessageBox::warningContinueCancel(this,mess,
3132 i18n("KO/Pi Conflict detected"),i18n("Show date"),i18n("No problem!")); 3132 i18n("KO/Pi Conflict detected"),i18n("Show date"),i18n("No problem!"));
3133 if ( km != KMessageBox::Continue ) { 3133 if ( km != KMessageBox::Continue ) {
3134 return; 3134 return;
3135 } 3135 }
3136 if ( mViewManager->currentView() != mViewManager->agendaView() || mNavigator->selectedDates().count() > 1 ) 3136 if ( mViewManager->currentView() != mViewManager->agendaView() || mNavigator->selectedDates().count() > 1 )
3137 mViewManager->showDayView(); 3137 mViewManager->showDayView();
3138 mNavigator->slotDaySelect( conflict.date() ); 3138 mNavigator->slotDaySelect( conflict.date() );
3139 int hour = conflict.time().hour(); 3139 int hour = conflict.time().hour();
3140 mViewManager->agendaView()->setStartHour( hour ); 3140 mViewManager->agendaView()->setStartHour( hour );
3141 topLevelWidget()->setCaption( i18n("Conflict %1 <-> %2"). arg( conflictingEvent->summary().left( 20 ) ).arg( cE->summary().left( 20 ) ) ); 3141 topLevelWidget()->setCaption( i18n("Conflict %1 <-> %2"). arg( conflictingEvent->summary().left( 20 ) ).arg( cE->summary().left( 20 ) ) );
3142 } else 3142 } else
3143 topLevelWidget()->setCaption( i18n("No conflict found") ); 3143 topLevelWidget()->setCaption( i18n("No conflict found") );
3144 return; 3144 return;
3145 3145
3146} 3146}
3147 3147
3148void CalendarView::updateTodoViews() 3148void CalendarView::updateTodoViews()
3149{ 3149{
3150 mTodoList->updateView(); 3150 mTodoList->updateView();
3151 mViewManager->currentView()->updateView(); 3151 mViewManager->currentView()->updateView();
3152 3152
3153} 3153}
3154 3154
3155 3155
3156 3156
3157void CalendarView::clearAllViews() 3157void CalendarView::clearAllViews()
3158{ 3158{
3159 mTodoList->clearList(); 3159 mTodoList->clearList();
3160 mViewManager->clearAllViews(); 3160 mViewManager->clearAllViews();
3161 SearchDialog * sd = mDialogManager->getSearchDialog(); 3161 SearchDialog * sd = mDialogManager->getSearchDialog();
3162 if ( sd ) { 3162 if ( sd ) {
3163 KOListView* kol = sd->listview(); 3163 KOListView* kol = sd->listview();
3164 if ( kol ) 3164 if ( kol )
3165 kol->clearList(); 3165 kol->clearList();
3166 } 3166 }
3167} 3167}
3168void CalendarView::updateView() 3168void CalendarView::updateView()
3169{ 3169{
3170 static bool clearallviews = false; 3170 static bool clearallviews = false;
3171 if ( KOPrefs::instance()->mGlobalUpdateDisabled ) { 3171 if ( KOPrefs::instance()->mGlobalUpdateDisabled ) {
3172 if ( clearallviews ) { 3172 if ( clearallviews ) {
3173 clearAllViews(); 3173 clearAllViews();
3174 clearallviews = false; 3174 clearallviews = false;
3175 } 3175 }
3176 return; 3176 return;
3177 } 3177 }
3178 clearallviews = true; 3178 clearallviews = true;
3179 DateList tmpList = mNavigator->selectedDates(); 3179 DateList tmpList = mNavigator->selectedDates();
3180 3180
3181 if ( KOPrefs::instance()->mHideNonStartedTodos ) 3181 if ( KOPrefs::instance()->mHideNonStartedTodos )
3182 mTodoList->updateView(); 3182 mTodoList->updateView();
3183 // We assume that the navigator only selects consecutive days. 3183 // We assume that the navigator only selects consecutive days.
3184 updateView( tmpList.first(), tmpList.last() ); 3184 updateView( tmpList.first(), tmpList.last() );
3185} 3185}
3186 3186
3187void CalendarView::updateUnmanagedViews() 3187void CalendarView::updateUnmanagedViews()
3188{ 3188{
3189 mDateNavigator->updateDayMatrix(); 3189 mDateNavigator->updateDayMatrix();
3190} 3190}
3191 3191
3192int CalendarView::msgItemDelete(const QString name) 3192int CalendarView::msgItemDelete(const QString name)
3193{ 3193{
3194 return KMessageBox::warningContinueCancel(this,name +"\n\n"+ 3194 return KMessageBox::warningContinueCancel(this,name +"\n\n"+
3195 i18n("This item will be\npermanently deleted."), 3195 i18n("This item will be\npermanently deleted."),
3196 i18n("KO/Pi Confirmation"),i18n("Delete")); 3196 i18n("KO/Pi Confirmation"),i18n("Delete"));
3197} 3197}
3198 3198
3199 3199
3200void CalendarView::edit_cut() 3200void CalendarView::edit_cut()
3201{ 3201{
3202 Event *anEvent=0; 3202 Event *anEvent=0;
3203 3203
3204 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 3204 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
3205 3205
3206 if (mViewManager->currentView()->isEventView()) { 3206 if (mViewManager->currentView()->isEventView()) {
3207 if ( incidence && incidence->typeID() == eventID ) { 3207 if ( incidence && incidence->typeID() == eventID ) {
3208 anEvent = static_cast<Event *>(incidence); 3208 anEvent = static_cast<Event *>(incidence);
3209 } 3209 }
3210 } 3210 }
3211 3211
3212 if (!anEvent) { 3212 if (!anEvent) {
3213 KNotifyClient::beep(); 3213 KNotifyClient::beep();
3214 return; 3214 return;
3215 } 3215 }
3216 DndFactory factory( mCalendar ); 3216 DndFactory factory( mCalendar );
3217 factory.cutIncidence(anEvent); 3217 factory.cutIncidence(anEvent);
3218 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 3218 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
3219} 3219}
3220 3220
3221void CalendarView::edit_copy() 3221void CalendarView::edit_copy()
3222{ 3222{
3223 Event *anEvent=0; 3223 Event *anEvent=0;
3224 3224
3225 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 3225 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
3226 3226
3227 if (mViewManager->currentView()->isEventView()) { 3227 if (mViewManager->currentView()->isEventView()) {
3228 if ( incidence && incidence->typeID() == eventID ) { 3228 if ( incidence && incidence->typeID() == eventID ) {
3229 anEvent = static_cast<Event *>(incidence); 3229 anEvent = static_cast<Event *>(incidence);
3230 } 3230 }
3231 } 3231 }
3232 3232
3233 if (!anEvent) { 3233 if (!anEvent) {
3234 KNotifyClient::beep(); 3234 KNotifyClient::beep();
3235 return; 3235 return;
3236 } 3236 }
3237 DndFactory factory( mCalendar ); 3237 DndFactory factory( mCalendar );
3238 factory.copyIncidence(anEvent); 3238 factory.copyIncidence(anEvent);
3239} 3239}
3240 3240
3241void CalendarView::edit_paste() 3241void CalendarView::edit_paste()
3242{ 3242{
3243 QDate date = mNavigator->selectedDates().first(); 3243 QDate date = mNavigator->selectedDates().first();
3244 3244
3245 DndFactory factory( mCalendar ); 3245 DndFactory factory( mCalendar );
3246 Event *pastedEvent = (Event *)factory.pasteIncidence( date ); 3246 Event *pastedEvent = (Event *)factory.pasteIncidence( date );
3247 3247
3248 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED ); 3248 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED );
3249} 3249}
3250void CalendarView::edit_global_options() 3250void CalendarView::edit_global_options()
3251{ 3251{
3252 QString tz = KPimGlobalPrefs::instance()->mTimeZoneId; 3252 QString tz = KPimGlobalPrefs::instance()->mTimeZoneId;
3253 emit save(); 3253 emit save();
3254 emit saveStopTimer(); 3254 emit saveStopTimer();
3255 mDialogManager->showGlobalOptionsDialog(); 3255 mDialogManager->showGlobalOptionsDialog();
3256 if ( tz != KPimGlobalPrefs::instance()->mTimeZoneId) { 3256 if ( tz != KPimGlobalPrefs::instance()->mTimeZoneId) {
3257 emit saveStopTimer(); 3257 emit saveStopTimer();
3258 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!"), 3258 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!"),
3259 i18n("Timezone settings"),i18n("Reload"))) { 3259 i18n("Timezone settings"),i18n("Reload"))) {
3260 qDebug("KO: TZ reload cancelled "); 3260 qDebug("KO: TZ reload cancelled ");
3261 mCalendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 3261 mCalendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
3262 return; 3262 return;
3263 } 3263 }
3264 qDebug("KO: Timezone change "); 3264 qDebug("KO: Timezone change ");
3265 loadCalendars(); 3265 loadCalendars();
3266 setModified(true); 3266 setModified(true);
3267 } 3267 }
3268 else 3268 else
3269 qDebug("KO: No tz change "); 3269 qDebug("KO: No tz change ");
3270} 3270}
3271void CalendarView::edit_options() 3271void CalendarView::edit_options()
3272{ 3272{
3273 mDialogManager->showOptionsDialog(); 3273 mDialogManager->showOptionsDialog();
3274} 3274}
3275 3275
3276 3276
3277void CalendarView::slotSelectPickerDate( QDate d) 3277void CalendarView::slotSelectPickerDate( QDate d)
3278{ 3278{
3279 mDateFrame->hide(); 3279 mDateFrame->hide();
3280 if ( mDatePickerMode == 1 ) { 3280 if ( mDatePickerMode == 1 ) {
3281 mNavigator->slotDaySelect( d ); 3281 mNavigator->slotDaySelect( d );
3282 } else if ( mDatePickerMode == 2 ) { 3282 } else if ( mDatePickerMode == 2 ) {
3283 if ( mMoveIncidence->typeID() == todoID ) { 3283 if ( mMoveIncidence->typeID() == todoID ) {
3284 Todo * to = (Todo *) mMoveIncidence; 3284 Todo * to = (Todo *) mMoveIncidence;
3285 QTime tim; 3285 QTime tim;
3286 int len = 0; 3286 int len = 0;
3287 if ( to->hasStartDate() && to->hasDueDate() ) 3287 if ( to->hasStartDate() && to->hasDueDate() )
3288 len = to->dtStart().secsTo( to->dtDue()); 3288 len = to->dtStart().secsTo( to->dtDue());
3289 if ( to->hasDueDate() ) 3289 if ( to->hasDueDate() )
3290 tim = to->dtDue().time(); 3290 tim = to->dtDue().time();
3291 else { 3291 else {
3292 tim = QTime ( 0,0,0 ); 3292 tim = QTime ( 0,0,0 );
3293 to->setFloats( true ); 3293 to->setFloats( true );
3294 to->setHasDueDate( true ); 3294 to->setHasDueDate( true );
3295 } 3295 }
3296 QDateTime dt ( d,tim ); 3296 QDateTime dt ( d,tim );
3297 to->setDtDue( dt ); 3297 to->setDtDue( dt );
3298 3298
3299 if ( to->hasStartDate() ) { 3299 if ( to->hasStartDate() ) {
3300 if ( len>0 ) 3300 if ( len>0 )
3301 to->setDtStart(to->dtDue().addSecs( -len )); 3301 to->setDtStart(to->dtDue().addSecs( -len ));
3302 else 3302 else
3303 if (to->dtStart() > to->dtDue() ) 3303 if (to->dtStart() > to->dtDue() )
3304 to->setDtStart(to->dtDue().addDays( -3 )); 3304 to->setDtStart(to->dtDue().addDays( -3 ));
3305 } 3305 }
3306 3306
3307 todoChanged( to ); 3307 todoChanged( to );
3308 } else if ( mMoveIncidence->typeID() == eventID ) { 3308 } else if ( mMoveIncidence->typeID() == eventID ) {
3309 if ( mMoveIncidence->doesRecur() ) { 3309 if ( mMoveIncidence->doesRecur() ) {
3310#if 0 3310#if 0
3311 // PENDING implement this 3311 // PENDING implement this
3312 Incidence* newInc = mMoveIncidence->recreateCloneException( mMoveIncidenceOldDate ); 3312 Incidence* newInc = mMoveIncidence->recreateCloneException( mMoveIncidenceOldDate );
3313 mCalendar()->addIncidence( newInc ); 3313 mCalendar()->addIncidence( newInc );
3314 if ( mMoveIncidence->typeID() == todoID ) 3314 if ( mMoveIncidence->typeID() == todoID )
3315 emit todoMoved((Todo*)mMoveIncidence, KOGlobals::EVENTEDITED ); 3315 emit todoMoved((Todo*)mMoveIncidence, KOGlobals::EVENTEDITED );
3316 else 3316 else
3317 emit incidenceChanged(mMoveIncidence, KOGlobals::EVENTEDITED); 3317 emit incidenceChanged(mMoveIncidence, KOGlobals::EVENTEDITED);
3318 mMoveIncidence = newInc; 3318 mMoveIncidence = newInc;
3319 3319
3320#endif 3320#endif
3321 } 3321 }
3322 QTime tim = mMoveIncidence->dtStart().time(); 3322 QTime tim = mMoveIncidence->dtStart().time();
3323 int secs = mMoveIncidence->dtStart().secsTo( mMoveIncidence->dtEnd()); 3323 int secs = mMoveIncidence->dtStart().secsTo( mMoveIncidence->dtEnd());
3324 QDateTime dt ( d,tim ); 3324 QDateTime dt ( d,tim );
3325 mMoveIncidence->setDtStart( dt ); 3325 mMoveIncidence->setDtStart( dt );
3326 ((Event*)mMoveIncidence)->setDtEnd( dt.addSecs( secs ) ); 3326 ((Event*)mMoveIncidence)->setDtEnd( dt.addSecs( secs ) );
3327 changeEventDisplay((Event*)mMoveIncidence, KOGlobals::EVENTEDITED); 3327 changeEventDisplay((Event*)mMoveIncidence, KOGlobals::EVENTEDITED);
3328 } else if ( mMoveIncidence->typeID() == journalID ) { 3328 } else if ( mMoveIncidence->typeID() == journalID ) {
3329 QTime tim = mMoveIncidence->dtStart().time(); 3329 QTime tim = mMoveIncidence->dtStart().time();
3330 QDateTime dt ( d,tim ); 3330 QDateTime dt ( d,tim );
3331 mMoveIncidence->setDtStart( dt ); 3331 mMoveIncidence->setDtStart( dt );
3332 updateView(); 3332 updateView();
3333 } 3333 }
3334 mMoveIncidence->setRevision( mMoveIncidence->revision()+1 ); 3334 mMoveIncidence->setRevision( mMoveIncidence->revision()+1 );
3335 } 3335 }
3336} 3336}
3337 3337
3338void CalendarView::removeCategories() 3338void CalendarView::removeCategories()
3339{ 3339{
3340 QPtrList<Incidence> incList = mCalendar->rawIncidences(); 3340 QPtrList<Incidence> incList = mCalendar->rawIncidences();
3341 QStringList catList = KOPrefs::instance()->mCustomCategories; 3341 QStringList catList = KOPrefs::instance()->mCustomCategories;
3342 QStringList catIncList; 3342 QStringList catIncList;
3343 QStringList newCatList; 3343 QStringList newCatList;
3344 Incidence* inc = incList.first(); 3344 Incidence* inc = incList.first();
3345 uint i; 3345 uint i;
3346 while ( inc ) { 3346 while ( inc ) {
3347 newCatList.clear(); 3347 newCatList.clear();
3348 catIncList = inc->categories() ; 3348 catIncList = inc->categories() ;
3349 for( i = 0; i< catIncList.count(); ++i ) { 3349 for( i = 0; i< catIncList.count(); ++i ) {
3350 if ( catList.contains (catIncList[i])) 3350 if ( catList.contains (catIncList[i]))
3351 newCatList.append( catIncList[i] ); 3351 newCatList.append( catIncList[i] );
3352 } 3352 }
3353 newCatList.sort(); 3353 newCatList.sort();
3354 inc->setCategories( newCatList.join(",") ); 3354 inc->setCategories( newCatList.join(",") );
3355 inc = incList.next(); 3355 inc = incList.next();
3356 } 3356 }
3357} 3357}
3358 3358
3359int CalendarView::addCategories() 3359int CalendarView::addCategories()
3360{ 3360{
3361 QPtrList<Incidence> incList = mCalendar->rawIncidences(); 3361 QPtrList<Incidence> incList = mCalendar->rawIncidences();
3362 QStringList catList = KOPrefs::instance()->mCustomCategories; 3362 QStringList catList = KOPrefs::instance()->mCustomCategories;
3363 QStringList catIncList; 3363 QStringList catIncList;
3364 Incidence* inc = incList.first(); 3364 Incidence* inc = incList.first();
3365 uint i; 3365 uint i;
3366 int count = 0; 3366 int count = 0;
3367 while ( inc ) { 3367 while ( inc ) {
3368 catIncList = inc->categories() ; 3368 catIncList = inc->categories() ;
3369 for( i = 0; i< catIncList.count(); ++i ) { 3369 for( i = 0; i< catIncList.count(); ++i ) {
3370 if ( !catList.contains (catIncList[i])) { 3370 if ( !catList.contains (catIncList[i])) {
3371 catList.append( catIncList[i] ); 3371 catList.append( catIncList[i] );
3372 //qDebug("add cat %s ", catIncList[i].latin1()); 3372 //qDebug("add cat %s ", catIncList[i].latin1());
3373 ++count; 3373 ++count;
3374 } 3374 }
3375 } 3375 }
3376 inc = incList.next(); 3376 inc = incList.next();
3377 } 3377 }
3378 catList.sort(); 3378 catList.sort();
3379 KOPrefs::instance()->mCustomCategories = catList; 3379 KOPrefs::instance()->mCustomCategories = catList;
3380 return count; 3380 return count;
3381} 3381}
3382 3382
3383void CalendarView::editCategories() 3383void CalendarView::editCategories()
3384{ 3384{
3385 qDebug("CalendarView::editCategories() "); 3385 qDebug("CalendarView::editCategories() ");
3386 KPIM::CategoryEditDialog ced (KOPrefs::instance(),this ); 3386 KPIM::CategoryEditDialog ced (KOPrefs::instance(),this );
3387 ced.exec(); 3387 ced.exec();
3388} 3388}
3389void CalendarView::manageCategories() 3389void CalendarView::manageCategories()
3390{ 3390{
3391 KOCatPrefs* cp = new KOCatPrefs(); 3391 KOCatPrefs* cp = new KOCatPrefs();
3392 cp->show(); 3392 cp->show();
3393 int w =cp->sizeHint().width() ; 3393 int w =cp->sizeHint().width() ;
3394 int h = cp->sizeHint().height() ; 3394 int h = cp->sizeHint().height() ;
3395 int dw = QApplication::desktop()->width(); 3395 int dw = QApplication::desktop()->width();
3396 int dh = QApplication::desktop()->height(); 3396 int dh = QApplication::desktop()->height();
3397 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 3397 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
3398 if ( !cp->exec() ) { 3398 if ( !cp->exec() ) {
3399 delete cp; 3399 delete cp;
3400 return; 3400 return;
3401 } 3401 }
3402 int count = 0; 3402 int count = 0;
3403 if ( cp->addCat() ) { 3403 if ( cp->addCat() ) {
3404 count = addCategories(); 3404 count = addCategories();
3405 if ( count ) { 3405 if ( count ) {
3406 topLevelWidget()->setCaption(QString::number( count )+ i18n(" Categories added to list! ")); 3406 topLevelWidget()->setCaption(QString::number( count )+ i18n(" Categories added to list! "));
3407 writeSettings(); 3407 writeSettings();
3408 } else 3408 } else
3409 topLevelWidget()->setCaption(QString::number( 0 )+ i18n(" Categories added to list! ")); 3409 topLevelWidget()->setCaption(QString::number( 0 )+ i18n(" Categories added to list! "));
3410 } else { 3410 } else {
3411 removeCategories(); 3411 removeCategories();
3412 updateView(); 3412 updateView();
3413 } 3413 }
3414 delete cp; 3414 delete cp;
3415} 3415}
3416 3416
3417void CalendarView::beamIncidence(Incidence * Inc) 3417void CalendarView::beamIncidence(Incidence * Inc)
3418{ 3418{
3419 QPtrList<Incidence> delSel ; 3419 QPtrList<Incidence> delSel ;
3420 delSel.append(Inc); 3420 delSel.append(Inc);
3421 beamIncidenceList( delSel ); 3421 beamIncidenceList( delSel );
3422} 3422}
3423void CalendarView::beamCalendar() 3423void CalendarView::beamCalendar()
3424{ 3424{
3425 QPtrList<Incidence> delSel = mCalendar->rawIncidences(); 3425 QPtrList<Incidence> delSel = mCalendar->rawIncidences();
3426 //qDebug("beamCalendar() "); 3426 //qDebug("beamCalendar() ");
3427 beamIncidenceList( delSel ); 3427 beamIncidenceList( delSel );
3428} 3428}
3429void CalendarView::beamFilteredCalendar() 3429void CalendarView::beamFilteredCalendar()
3430{ 3430{
3431 QPtrList<Incidence> delSel = mCalendar->incidences(); 3431 QPtrList<Incidence> delSel = mCalendar->incidences();
3432 //qDebug("beamFilteredCalendar() "); 3432 //qDebug("beamFilteredCalendar() ");
3433 beamIncidenceList( delSel ); 3433 beamIncidenceList( delSel );
3434} 3434}
3435void CalendarView::beamIncidenceList(QPtrList<Incidence> delSel ) 3435void CalendarView::beamIncidenceList(QPtrList<Incidence> delSel )
3436{ 3436{
3437 3437
3438 KOBeamPrefs beamDialog; 3438 KOBeamPrefs beamDialog;
3439 if ( beamDialog.exec () == QDialog::Rejected ) 3439 if ( beamDialog.exec () == QDialog::Rejected )
3440 return; 3440 return;
3441#ifdef DESKTOP_VERSION 3441#ifdef DESKTOP_VERSION
3442 QString fn = locateLocal( "tmp", "kopibeamfile" ); 3442 QString fn = locateLocal( "tmp", "kopibeamfile" );
3443#else 3443#else
3444 QString fn = "/tmp/kopibeamfile"; 3444 QString fn = "/tmp/kopibeamfile";
3445#endif 3445#endif
3446 QString mes; 3446 QString mes;
3447 bool createbup = true; 3447 bool createbup = true;
3448 if ( createbup ) { 3448 if ( createbup ) {
3449 QString description = "\n"; 3449 QString description = "\n";
3450 CalendarLocal* cal = new CalendarLocal(); 3450 CalendarLocal* cal = new CalendarLocal();
3451 if ( beamDialog.beamLocal() ) 3451 if ( beamDialog.beamLocal() )
3452 cal->setLocalTime(); 3452 cal->setLocalTime();
3453 else 3453 else
3454 cal->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 3454 cal->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
3455 Incidence *incidence = delSel.first(); 3455 Incidence *incidence = delSel.first();
3456 bool addText = false; 3456 bool addText = false;
3457 if ( delSel.count() < 10 ) 3457 if ( delSel.count() < 10 )
3458 addText = true; 3458 addText = true;
3459 else { 3459 else {
3460 description.sprintf(i18n(" %d items?"),delSel.count() ); 3460 description.sprintf(i18n(" %d items?"),delSel.count() );
3461 } 3461 }
3462 while ( incidence ) { 3462 while ( incidence ) {
3463 Incidence *in = incidence->clone(); 3463 Incidence *in = incidence->clone();
3464 if ( ! in->summary().isEmpty() ) { 3464 if ( ! in->summary().isEmpty() ) {
3465 in->setDescription(""); 3465 in->setDescription("");
3466 } else { 3466 } else {
3467 in->setSummary( in->description().left(20)); 3467 in->setSummary( in->description().left(20));
3468 in->setDescription(""); 3468 in->setDescription("");
3469 } 3469 }
3470 if ( addText ) 3470 if ( addText )
3471 description += in->summary() + "\n"; 3471 description += in->summary() + "\n";
3472 cal->addIncidence( in ); 3472 cal->addIncidence( in );
3473 incidence = delSel.next(); 3473 incidence = delSel.next();
3474 } 3474 }
3475 if ( beamDialog.beamVcal() ) { 3475 if ( beamDialog.beamVcal() ) {
3476 fn += ".vcs"; 3476 fn += ".vcs";
3477 FileStorage storage( cal, fn, new VCalFormat ); 3477 FileStorage storage( cal, fn, new VCalFormat );
3478 storage.save(); 3478 storage.save();
3479 } else { 3479 } else {
3480 fn += ".ics"; 3480 fn += ".ics";
3481 FileStorage storage( cal, fn, new ICalFormat( ) ); 3481 FileStorage storage( cal, fn, new ICalFormat( ) );
3482 storage.save(); 3482 storage.save();
3483 } 3483 }
3484 delete cal; 3484 delete cal;
3485 mes = i18n("KO/Pi: Ready for beaming"); 3485 mes = i18n("KO/Pi: Ready for beaming");
3486 topLevelWidget()->setCaption(mes); 3486 topLevelWidget()->setCaption(mes);
3487 KApplication::convert2latin1( fn ); 3487 KApplication::convert2latin1( fn );
3488#ifndef DESKTOP_VERSION 3488#ifndef DESKTOP_VERSION
3489 Ir *ir = new Ir( this ); 3489 Ir *ir = new Ir( this );
3490 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) ); 3490 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) );
3491 ir->send( fn, description, "text/x-vCalendar" ); 3491 ir->send( fn, description, "text/x-vCalendar" );
3492#endif 3492#endif
3493 } 3493 }
3494} 3494}
3495 3495
3496#ifndef DESKTOP_VERSION 3496#ifndef DESKTOP_VERSION
3497void CalendarView::beamDone( Ir *ir ) 3497void CalendarView::beamDone( Ir *ir )
3498{ 3498{
3499 delete ir; 3499 delete ir;
3500 topLevelWidget()->setCaption( i18n("KO/Pi: Beaming done.") ); 3500 topLevelWidget()->setCaption( i18n("KO/Pi: Beaming done.") );
3501 topLevelWidget()->raise(); 3501 topLevelWidget()->raise();
3502} 3502}
3503#else 3503#else
3504void CalendarView::beamDone( Ir *){;} 3504void CalendarView::beamDone( Ir *){;}
3505#endif 3505#endif
3506void CalendarView::moveIncidence(Incidence * inc ) 3506void CalendarView::moveIncidence(Incidence * inc )
3507{ 3507{
3508 if ( !inc ) return; 3508 if ( !inc ) return;
3509 showDatePickerPopup(); 3509 showDatePickerPopup();
3510 mDatePickerMode = 2; 3510 mDatePickerMode = 2;
3511 mMoveIncidence = inc ; 3511 mMoveIncidence = inc ;
3512 QDate da; 3512 QDate da;
3513 if ( mMoveIncidence->typeID() == todoID ) { 3513 if ( mMoveIncidence->typeID() == todoID ) {
3514 Todo * to = (Todo *) mMoveIncidence; 3514 Todo * to = (Todo *) mMoveIncidence;
3515 if ( to->hasDueDate() ) 3515 if ( to->hasDueDate() )
3516 da = to->dtDue().date(); 3516 da = to->dtDue().date();
3517 else 3517 else
3518 da = QDate::currentDate(); 3518 da = QDate::currentDate();
3519 } else { 3519 } else {
3520 da = mMoveIncidence->dtStart().date(); 3520 da = mMoveIncidence->dtStart().date();
3521 } 3521 }
3522 //PENDING set date for recurring incidence to date of recurrence 3522 //PENDING set date for recurring incidence to date of recurrence
3523 //mMoveIncidenceOldDate; 3523 //mMoveIncidenceOldDate;
3524 mDatePicker->setDate( da ); 3524 mDatePicker->setDate( da );
3525} 3525}
3526void CalendarView::showDatePickerPopup() 3526void CalendarView::showDatePickerPopup()
3527{ 3527{
3528 if ( mDateFrame->isVisible() ) 3528 if ( mDateFrame->isVisible() )
3529 mDateFrame->hide(); 3529 mDateFrame->hide();
3530 else { 3530 else {
3531 int offX = 0, offY = 0; 3531 int offX = 0, offY = 0;
3532#ifdef DESKTOP_VERSION 3532#ifdef DESKTOP_VERSION
3533 int w =mDatePicker->sizeHint().width() ; 3533 int w =mDatePicker->sizeHint().width() ;
3534 int h = mDatePicker->sizeHint().height() ; 3534 int h = mDatePicker->sizeHint().height() ;
3535 int dw = topLevelWidget()->width(); 3535 int dw = topLevelWidget()->width();
3536 int dh = topLevelWidget()->height(); 3536 int dh = topLevelWidget()->height();
3537 offX = topLevelWidget()->x(); 3537 offX = topLevelWidget()->x();
3538 offY = topLevelWidget()->y(); 3538 offY = topLevelWidget()->y();
3539#else 3539#else
3540 int w =mDatePicker->sizeHint().width() ; 3540 int w =mDatePicker->sizeHint().width() ;
3541 int h = mDatePicker->sizeHint().height() ; 3541 int h = mDatePicker->sizeHint().height() ;
3542 int dw = QApplication::desktop()->width(); 3542 int dw = QApplication::desktop()->width();
3543 int dh = QApplication::desktop()->height(); 3543 int dh = QApplication::desktop()->height();
3544#endif 3544#endif
3545 mDateFrame->setGeometry( (dw-w)/2+offX, (dh - h )/2+offY ,w,h ); 3545 mDateFrame->setGeometry( (dw-w)/2+offX, (dh - h )/2+offY ,w,h );
3546 mDateFrame->show(); 3546 mDateFrame->show();
3547 } 3547 }
3548} 3548}
3549void CalendarView::showDatePicker( ) 3549void CalendarView::showDatePicker( )
3550{ 3550{
3551 showDatePickerPopup(); 3551 showDatePickerPopup();
3552 mDatePickerMode = 1; 3552 mDatePickerMode = 1;
3553 mDatePicker->setDate( mNavigator->selectedDates().first() ); 3553 mDatePicker->setDate( mNavigator->selectedDates().first() );
3554} 3554}
3555 3555
3556void CalendarView::showEventEditor() 3556void CalendarView::showEventEditor()
3557{ 3557{
3558#ifdef DESKTOP_VERSION 3558#ifdef DESKTOP_VERSION
3559 int x,y,w,h; 3559 int x,y,w,h;
3560 x = mEventEditor->geometry().x(); 3560 x = mEventEditor->geometry().x();
3561 y = mEventEditor->geometry().y(); 3561 y = mEventEditor->geometry().y();
3562 w = mEventEditor->width(); 3562 w = mEventEditor->width();
3563 h = mEventEditor->height(); 3563 h = mEventEditor->height();
3564 mEventEditor->show(); 3564 mEventEditor->show();
3565 mEventEditor->setGeometry(x,y,w,h); 3565 mEventEditor->setGeometry(x,y,w,h);
3566#else 3566#else
3567 if ( mEventEditor->width() < QApplication::desktop()->width() -60 || mEventEditor->width() > QApplication::desktop()->width() ) { 3567 if ( mEventEditor->width() < QApplication::desktop()->width() -60 || mEventEditor->width() > QApplication::desktop()->width() ) {
3568 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") ); 3568 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") );
3569 qDebug("KO: CalendarView: recreate mEventEditor %d %d", mEventEditor->width(), QApplication::desktop()->width() ); 3569 qDebug("KO: CalendarView: recreate mEventEditor %d %d", mEventEditor->width(), QApplication::desktop()->width() );
3570 qApp->processEvents(); 3570 qApp->processEvents();
3571 delete mEventEditor; 3571 delete mEventEditor;
3572 mEventEditor = mDialogManager->getEventEditor(); 3572 mEventEditor = mDialogManager->getEventEditor();
3573 topLevelWidget()->setCaption( i18n("") ); 3573 topLevelWidget()->setCaption( i18n("") );
3574 } 3574 }
3575 mEventEditor->showMaximized(); 3575 mEventEditor->showMaximized();
3576#endif 3576#endif
3577} 3577}
3578void CalendarView::showTodoEditor() 3578void CalendarView::showTodoEditor()
3579{ 3579{
3580#ifdef DESKTOP_VERSION 3580#ifdef DESKTOP_VERSION
3581 int x,y,w,h; 3581 int x,y,w,h;
3582 x = mTodoEditor->geometry().x(); 3582 x = mTodoEditor->geometry().x();
3583 y = mTodoEditor->geometry().y(); 3583 y = mTodoEditor->geometry().y();
3584 w = mTodoEditor->width(); 3584 w = mTodoEditor->width();
3585 h = mTodoEditor->height(); 3585 h = mTodoEditor->height();
3586 mTodoEditor->show(); 3586 mTodoEditor->show();
3587 mTodoEditor->setGeometry(x,y,w,h); 3587 mTodoEditor->setGeometry(x,y,w,h);
3588#else 3588#else
3589 if ( mTodoEditor->width() < QApplication::desktop()->width() -60|| mTodoEditor->width() > QApplication::desktop()->width() ) { 3589 if ( mTodoEditor->width() < QApplication::desktop()->width() -60|| mTodoEditor->width() > QApplication::desktop()->width() ) {
3590 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") ); 3590 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") );
3591 qDebug("KO: CalendarView: recreate mTodoEditor %d %d ", mTodoEditor->width() ,QApplication::desktop()->width() ); 3591 qDebug("KO: CalendarView: recreate mTodoEditor %d %d ", mTodoEditor->width() ,QApplication::desktop()->width() );
3592 qApp->processEvents(); 3592 qApp->processEvents();
3593 delete mTodoEditor; 3593 delete mTodoEditor;
3594 mTodoEditor = mDialogManager->getTodoEditor(); 3594 mTodoEditor = mDialogManager->getTodoEditor();
3595 topLevelWidget()->setCaption( i18n("") ); 3595 topLevelWidget()->setCaption( i18n("") );
3596 } 3596 }
3597 mTodoEditor->showMaximized(); 3597 mTodoEditor->showMaximized();
3598#endif 3598#endif
3599} 3599}
3600 3600
3601void CalendarView::cloneIncidence() 3601void CalendarView::cloneIncidence()
3602{ 3602{
3603 Incidence *incidence = currentSelection(); 3603 Incidence *incidence = currentSelection();
3604 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3604 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3605 if ( incidence ) { 3605 if ( incidence ) {
3606 cloneIncidence(incidence); 3606 cloneIncidence(incidence);
3607 } 3607 }
3608} 3608}
3609void CalendarView::moveIncidence() 3609void CalendarView::moveIncidence()
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 moveIncidence(incidence); 3614 moveIncidence(incidence);
3615 } 3615 }
3616} 3616}
3617void CalendarView::beamIncidence() 3617void CalendarView::beamIncidence()
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 beamIncidence(incidence); 3622 beamIncidence(incidence);
3623 } 3623 }
3624} 3624}
3625void CalendarView::toggleCancelIncidence() 3625void CalendarView::toggleCancelIncidence()
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 cancelIncidence(incidence); 3630 cancelIncidence(incidence);
3631 } 3631 }
3632} 3632}
3633 3633
3634 3634
3635void CalendarView::cancelIncidence(Incidence * inc ) 3635void CalendarView::cancelIncidence(Incidence * inc )
3636{ 3636{
3637 inc->setCancelled( ! inc->cancelled() ); 3637 inc->setCancelled( ! inc->cancelled() );
3638 changeIncidenceDisplay( inc,KOGlobals::EVENTEDITED ); 3638 changeIncidenceDisplay( inc,KOGlobals::EVENTEDITED );
3639 updateView(); 3639 updateView();
3640} 3640}
3641void CalendarView::cloneIncidence(Incidence * orgInc ) 3641void CalendarView::cloneIncidence(Incidence * orgInc )
3642{ 3642{
3643 Incidence * newInc = orgInc->clone(); 3643 Incidence * newInc = orgInc->clone();
3644 newInc->recreate(); 3644 newInc->recreate();
3645 3645
3646 if ( newInc->typeID() == todoID ) { 3646 if ( newInc->typeID() == todoID ) {
3647 Todo* t = (Todo*) newInc; 3647 Todo* t = (Todo*) newInc;
3648 bool cloneSub = false; 3648 bool cloneSub = false;
3649 if ( orgInc->relations().count() ) { 3649 if ( orgInc->relations().count() ) {
3650 int result = KMessageBox::warningYesNoCancel(this, 3650 int result = KMessageBox::warningYesNoCancel(this,
3651 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 ) ), 3651 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 ) ),
3652 i18n("Todo has subtodos"), 3652 i18n("Todo has subtodos"),
3653 i18n("Yes"), 3653 i18n("Yes"),
3654 i18n("No")); 3654 i18n("No"));
3655 3655
3656 if ( result == KMessageBox::Cancel ) { 3656 if ( result == KMessageBox::Cancel ) {
3657 delete t; 3657 delete t;
3658 return; 3658 return;
3659 } 3659 }
3660 if (result == KMessageBox::Yes) cloneSub = true; 3660 if (result == KMessageBox::Yes) cloneSub = true;
3661 } 3661 }
3662 showTodoEditor(); 3662 showTodoEditor();
3663 mTodoEditor->editTodo( t ); 3663 mTodoEditor->editTodo( t );
3664 if ( mTodoEditor->exec() ) { 3664 if ( mTodoEditor->exec() ) {
3665 if ( cloneSub ) { 3665 if ( cloneSub ) {
3666 orgInc->cloneRelations( t ); 3666 orgInc->cloneRelations( t );
3667 mCalendar->addIncidenceBranch( t ); 3667 mCalendar->addIncidenceBranch( t );
3668 updateView(); 3668 updateView();
3669 3669
3670 } else { 3670 } else {
3671 mCalendar->addTodo( t ); 3671 mCalendar->addTodo( t );
3672 updateView(); 3672 updateView();
3673 } 3673 }
3674 } else { 3674 } else {
3675 delete t; 3675 delete t;
3676 } 3676 }
3677 } 3677 }
3678 else if ( newInc->typeID() == eventID ) { 3678 else if ( newInc->typeID() == eventID ) {
3679 Event* e = (Event*) newInc; 3679 Event* e = (Event*) newInc;
3680 showEventEditor(); 3680 showEventEditor();
3681 mEventEditor->editEvent( e ); 3681 mEventEditor->editEvent( e );
3682 if ( mEventEditor->exec() ) { 3682 if ( mEventEditor->exec() ) {
3683 mCalendar->addEvent( e ); 3683 mCalendar->addEvent( e );
3684 updateView(); 3684 updateView();
3685 } else { 3685 } else {
3686 delete e; 3686 delete e;
3687 } 3687 }
3688 } else if ( newInc->typeID() == journalID ) { 3688 } else if ( newInc->typeID() == journalID ) {
3689 mCalendar->addJournal( (Journal*) newInc ); 3689 mCalendar->addJournal( (Journal*) newInc );
3690 editJournal( (Journal*) newInc ); 3690 editJournal( (Journal*) newInc );
3691 } 3691 }
3692 setActiveWindow(); 3692 setActiveWindow();
3693} 3693}
3694 3694
3695void CalendarView::newEvent() 3695void CalendarView::newEvent()
3696{ 3696{
3697 // TODO: Replace this code by a common eventDurationHint of KOBaseView. 3697 // TODO: Replace this code by a common eventDurationHint of KOBaseView.
3698 KOAgendaView *aView = mViewManager->agendaView(); 3698 KOAgendaView *aView = mViewManager->agendaView();
3699 if (aView) { 3699 if (aView) {
3700 if (aView->selectionStart().isValid()) { 3700 if (aView->selectionStart().isValid()) {
3701 if (aView->selectedIsAllDay()) { 3701 if (aView->selectedIsAllDay()) {
3702 newEvent(aView->selectionStart(),aView->selectionEnd(),true); 3702 newEvent(aView->selectionStart(),aView->selectionEnd(),true);
3703 } else { 3703 } else {
3704 newEvent(aView->selectionStart(),aView->selectionEnd()); 3704 newEvent(aView->selectionStart(),aView->selectionEnd());
3705 } 3705 }
3706 return; 3706 return;
3707 } 3707 }
3708 } 3708 }
3709 3709
3710 QDate date = mNavigator->selectedDates().first(); 3710 QDate date = mNavigator->selectedDates().first();
3711#if 0 3711#if 0
3712 QDateTime current = QDateTime::currentDateTime(); 3712 QDateTime current = QDateTime::currentDateTime();
3713 if ( date <= current.date() ) { 3713 if ( date <= current.date() ) {
3714 int hour = current.time().hour() +1; 3714 int hour = current.time().hour() +1;
3715 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ), 3715 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ),
3716 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 3716 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
3717 } else 3717 } else
3718#endif 3718#endif
3719 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ), 3719 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ),
3720 QDateTime( date, QTime( KOPrefs::instance()->mStartTime + 3720 QDateTime( date, QTime( KOPrefs::instance()->mStartTime +
3721 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 3721 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
3722} 3722}
3723 3723
3724void CalendarView::newEvent(QDateTime fh) 3724void CalendarView::newEvent(QDateTime fh)
3725{ 3725{
3726 newEvent(fh, 3726 newEvent(fh,
3727 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration))); 3727 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration)));
3728} 3728}
3729 3729
3730void CalendarView::newEvent(QDate dt) 3730void CalendarView::newEvent(QDate dt)
3731{ 3731{
3732 newEvent(QDateTime(dt, QTime(0,0,0)), 3732 newEvent(QDateTime(dt, QTime(0,0,0)),
3733 QDateTime(dt, QTime(0,0,0)), true); 3733 QDateTime(dt, QTime(0,0,0)), true);
3734} 3734}
3735void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint) 3735void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint)
3736{ 3736{
3737 newEvent(fromHint, toHint, false); 3737 newEvent(fromHint, toHint, false);
3738} 3738}
3739void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay) 3739void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay)
3740{ 3740{
3741 3741
3742 showEventEditor(); 3742 showEventEditor();
3743 mEventEditor->newEvent(fromHint,toHint,allDay); 3743 mEventEditor->newEvent(fromHint,toHint,allDay);
3744 if ( mFilterView->filtersEnabled() ) { 3744 if ( mFilterView->filtersEnabled() ) {
3745 CalFilter *filter = mFilterView->selectedFilter(); 3745 CalFilter *filter = mFilterView->selectedFilter();
3746 if (filter && filter->showCategories()) { 3746 if (filter && filter->showCategories()) {
3747 mEventEditor->setCategories(filter->categoryList().join(",") ); 3747 mEventEditor->setCategories(filter->categoryList().join(",") );
3748 } 3748 }
3749 if ( filter ) 3749 if ( filter )
3750 mEventEditor->setSecrecy( filter->getSecrecy() ); 3750 mEventEditor->setSecrecy( filter->getSecrecy() );
3751 } 3751 }
3752 mEventEditor->exec(); 3752 mEventEditor->exec();
3753 setActiveWindow(); 3753 setActiveWindow();
3754} 3754}
3755void CalendarView::todoAdded(Todo * t) 3755void CalendarView::todoAdded(Todo * t)
3756{ 3756{
3757 3757
3758 changeTodoDisplay ( t ,KOGlobals::EVENTADDED); 3758 changeTodoDisplay ( t ,KOGlobals::EVENTADDED);
3759 updateTodoViews(); 3759 updateTodoViews();
3760} 3760}
3761void CalendarView::todoChanged(Todo * t) 3761void CalendarView::todoChanged(Todo * t)
3762{ 3762{
3763 emit todoModified( t, 4 ); 3763 emit todoModified( t, 4 );
3764 // updateTodoViews(); 3764 // updateTodoViews();
3765} 3765}
3766void CalendarView::todoToBeDeleted(Todo *) 3766void CalendarView::todoToBeDeleted(Todo *)
3767{ 3767{
3768 //qDebug("todoToBeDeleted(Todo *) "); 3768 //qDebug("todoToBeDeleted(Todo *) ");
3769 updateTodoViews(); 3769 updateTodoViews();
3770} 3770}
3771void CalendarView::todoDeleted() 3771void CalendarView::todoDeleted()
3772{ 3772{
3773 //qDebug(" todoDeleted()"); 3773 //qDebug(" todoDeleted()");
3774 updateTodoViews(); 3774 updateTodoViews();
3775} 3775}
3776 3776
3777 3777
3778void CalendarView::newTodoDateTime( QDateTime dt, bool allday ) 3778void CalendarView::newTodoDateTime( QDateTime dt, bool allday )
3779{ 3779{
3780 showTodoEditor(); 3780 showTodoEditor();
3781 mTodoEditor->newTodo(dt,0,allday); 3781 mTodoEditor->newTodo(dt,0,allday);
3782 if ( mFilterView->filtersEnabled() ) { 3782 if ( mFilterView->filtersEnabled() ) {
3783 CalFilter *filter = mFilterView->selectedFilter(); 3783 CalFilter *filter = mFilterView->selectedFilter();
3784 if (filter && filter->showCategories()) { 3784 if (filter && filter->showCategories()) {
3785 mTodoEditor->setCategories(filter->categoryList().join(",") ); 3785 mTodoEditor->setCategories(filter->categoryList().join(",") );
3786 } 3786 }
3787 if ( filter ) 3787 if ( filter )
3788 mTodoEditor->setSecrecy( filter->getSecrecy() ); 3788 mTodoEditor->setSecrecy( filter->getSecrecy() );
3789 } 3789 }
3790 mTodoEditor->exec(); 3790 mTodoEditor->exec();
3791 setActiveWindow(); 3791 setActiveWindow();
3792} 3792}
3793 3793
3794void CalendarView::newTodo() 3794void CalendarView::newTodo()
3795{ 3795{
3796 newTodoDateTime( QDateTime(),true ); 3796 newTodoDateTime( QDateTime(),true );
3797} 3797}
3798 3798
3799void CalendarView::newSubTodo() 3799void CalendarView::newSubTodo()
3800{ 3800{
3801 Todo *todo = selectedTodo(); 3801 Todo *todo = selectedTodo();