summaryrefslogtreecommitdiffabout
path: root/korganizer
authorzautrix <zautrix>2005-09-18 13:50:46 (UTC)
committer zautrix <zautrix>2005-09-18 13:50:46 (UTC)
commitc6e493d4e5b9eafcc3402c39e30c4283ce8cc8e5 (patch) (unidiff)
tree94e7bdc361b68a3a569eebe14f66458b3795dd6a /korganizer
parente7cd095ea9e80e26c90cbc2d3bf36921b7541c19 (diff)
downloadkdepimpi-c6e493d4e5b9eafcc3402c39e30c4283ce8cc8e5.zip
kdepimpi-c6e493d4e5b9eafcc3402c39e30c4283ce8cc8e5.tar.gz
kdepimpi-c6e493d4e5b9eafcc3402c39e30c4283ce8cc8e5.tar.bz2
delay
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp13
-rw-r--r--korganizer/calendarview.h3
-rw-r--r--korganizer/mainwindow.cpp69
-rw-r--r--korganizer/mainwindow.h5
4 files changed, 69 insertions, 21 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 79fb727..2ba8528 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -2454,192 +2454,193 @@ bool CalendarView::checkFileChanged(QString fn)
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 //saveError = "test error";
2550 if ( !saveError.isEmpty() ) { 2551 if ( !saveError.isEmpty() ) {
2551 saveError = KGlobal::formatMessage( i18n("Calendar(s) not saved:"),0 )+"\n" + saveError; 2552 saveError = KGlobal::formatMessage( i18n("Calendar(s) not saved:"),0 )+"\n" + saveError;
2552 KMessageBox::error(this, saveError, i18n("Error saving data")); 2553 KMessageBox::error(this, saveError, i18n("Error saving data"));
2553 return false; 2554 return false;
2554 } 2555 }
2555 return true; 2556 return true;
2556} 2557}
2557bool CalendarView::saveCalendar( QString filename ) 2558bool CalendarView::saveCalendar( QString filename )
2558{ 2559{
2559 2560
2560 // Store back all unsaved data into calendar object 2561 // Store back all unsaved data into calendar object
2561 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() ); 2562 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() );
2562 if ( mViewManager->currentView() ) 2563 if ( mViewManager->currentView() )
2563 mViewManager->currentView()->flushView(); 2564 mViewManager->currentView()->flushView();
2564 2565
2565 2566
2566 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2); 2567 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2);
2567 mStorage->setSaveFormat( new ICalFormat() ); 2568 mStorage->setSaveFormat( new ICalFormat() );
2568 mStorage->setFileName( filename ); 2569 mStorage->setFileName( filename );
2569 bool success; 2570 bool success;
2570 success = mStorage->save(); 2571 success = mStorage->save();
2571 if ( !success ) { 2572 if ( !success ) {
2572 return false; 2573 return false;
2573 } 2574 }
2574 if ( filename == MainWindow::defaultFileName() ) { 2575 if ( filename == MainWindow::defaultFileName() ) {
2575 setLoadedFileVersion( lfv ); 2576 setLoadedFileVersion( lfv );
2576 watchSavedFile(); 2577 watchSavedFile();
2577 } 2578 }
2578 return true; 2579 return true;
2579} 2580}
2580 2581
2581void CalendarView::closeCalendar() 2582void CalendarView::closeCalendar()
2582{ 2583{
2583 2584
2584 // child windows no longer valid 2585 // child windows no longer valid
2585 clearAllViews(); 2586 clearAllViews();
2586 emit closingDown(); 2587 emit closingDown();
2587 2588
2588 mCalendar->close(); 2589 mCalendar->close();
2589 setModified(false); 2590 setModified(false);
2590 updateView(); 2591 updateView();
2591} 2592}
2592 2593
2593void CalendarView::archiveCalendar() 2594void CalendarView::archiveCalendar()
2594{ 2595{
2595 mDialogManager->showArchiveDialog(); 2596 mDialogManager->showArchiveDialog();
2596} 2597}
2597 2598
2598 2599
2599void CalendarView::readSettings() 2600void CalendarView::readSettings()
2600{ 2601{
2601 2602
2602 2603
2603 // mViewManager->showAgendaView(); 2604 // mViewManager->showAgendaView();
2604 QString str; 2605 QString str;
2605 //qDebug("CalendarView::readSettings() "); 2606 //qDebug("CalendarView::readSettings() ");
2606 // read settings from the KConfig, supplying reasonable 2607 // read settings from the KConfig, supplying reasonable
2607 // defaults where none are to be found 2608 // defaults where none are to be found
2608 KConfig *config = KOGlobals::config(); 2609 KConfig *config = KOGlobals::config();
2609#ifndef KORG_NOSPLITTER 2610#ifndef KORG_NOSPLITTER
2610 config->setGroup("KOrganizer Geometry"); 2611 config->setGroup("KOrganizer Geometry");
2611 2612
2612 QValueList<int> sizes = config->readIntListEntry("Separator1"); 2613 QValueList<int> sizes = config->readIntListEntry("Separator1");
2613 if (sizes.count() != 2) { 2614 if (sizes.count() != 2) {
2614 sizes << mDateNavigator->minimumSizeHint().width(); 2615 sizes << mDateNavigator->minimumSizeHint().width();
2615 sizes << 300; 2616 sizes << 300;
2616 } 2617 }
2617 mPanner->setSizes(sizes); 2618 mPanner->setSizes(sizes);
2618 2619
2619 sizes = config->readIntListEntry("Separator2"); 2620 sizes = config->readIntListEntry("Separator2");
2620 if ( ( mResourceView && sizes.count() == 4 ) || 2621 if ( ( mResourceView && sizes.count() == 4 ) ||
2621 ( !mResourceView && sizes.count() == 3 ) ) { 2622 ( !mResourceView && sizes.count() == 3 ) ) {
2622 mLeftSplitter->setSizes(sizes); 2623 mLeftSplitter->setSizes(sizes);
2623 } 2624 }
2624#endif 2625#endif
2625 globalFlagBlockAgenda = 1; 2626 globalFlagBlockAgenda = 1;
2626 mViewManager->showAgendaView(); 2627 mViewManager->showAgendaView();
2627 //mViewManager->readSettings( config ); 2628 //mViewManager->readSettings( config );
2628 mTodoList->restoreLayout(config,QString("Todo Layout")); 2629 mTodoList->restoreLayout(config,QString("Todo Layout"));
2629 readFilterSettings(config); 2630 readFilterSettings(config);
2630 2631
2631#ifdef DESKTOP_VERSION 2632#ifdef DESKTOP_VERSION
2632 config->setGroup("WidgetLayout"); 2633 config->setGroup("WidgetLayout");
2633 QStringList list; 2634 QStringList list;
2634 list = config->readListEntry("MainLayout"); 2635 list = config->readListEntry("MainLayout");
2635 int x,y,w,h; 2636 int x,y,w,h;
2636 if ( ! list.isEmpty() ) { 2637 if ( ! list.isEmpty() ) {
2637 x = list[0].toInt(); 2638 x = list[0].toInt();
2638 y = list[1].toInt(); 2639 y = list[1].toInt();
2639 w = list[2].toInt(); 2640 w = list[2].toInt();
2640 h = list[3].toInt(); 2641 h = list[3].toInt();
2641 KApplication::testCoords( &x,&y,&w,&h ); 2642 KApplication::testCoords( &x,&y,&w,&h );
2642 topLevelWidget()->setGeometry(x,y,w,h); 2643 topLevelWidget()->setGeometry(x,y,w,h);
2643 2644
2644 } else { 2645 } else {
2645 topLevelWidget()->setGeometry( 40 ,40 , 640, 440); 2646 topLevelWidget()->setGeometry( 40 ,40 , 640, 440);
@@ -4370,202 +4371,204 @@ void CalendarView::schedule(Scheduler::Method method, Incidence *incidence)
4370 ev->clearAttendees(); 4371 ev->clearAttendees();
4371 ev->addAttendee(menew,false); 4372 ev->addAttendee(menew,false);
4372 } else { 4373 } else {
4373 if (to) { 4374 if (to) {
4374 todo->clearAttendees(); 4375 todo->clearAttendees();
4375 todo->addAttendee(menew,false); 4376 todo->addAttendee(menew,false);
4376 } 4377 }
4377 } 4378 }
4378 } 4379 }
4379 4380
4380 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 4381 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
4381 if (ev) { 4382 if (ev) {
4382 if ( !dlg->addMessage(ev,method) ) delete(ev); 4383 if ( !dlg->addMessage(ev,method) ) delete(ev);
4383 } else { 4384 } else {
4384 if (to) { 4385 if (to) {
4385 if ( !dlg->addMessage(to,method) ) delete(to); 4386 if ( !dlg->addMessage(to,method) ) delete(to);
4386 } 4387 }
4387 } 4388 }
4388} 4389}
4389 4390
4390void CalendarView::openAddressbook() 4391void CalendarView::openAddressbook()
4391{ 4392{
4392 KRun::runCommand("kaddressbook"); 4393 KRun::runCommand("kaddressbook");
4393} 4394}
4394 4395
4395void CalendarView::setModified(bool modified) 4396void CalendarView::setModified(bool modified)
4396{ 4397{
4397 //qDebug("CalendarView::setModified %d ", modified); 4398 //qDebug("CalendarView::setModified %d ", modified);
4398 if ( modified ) 4399 if ( modified )
4399 emit signalmodified(); 4400 emit signalmodified();
4400 mModified = modified; 4401 mModified = modified;
4401 if ( mModified ) 4402 if ( mModified )
4402 emit modifiedChanged(mModified); 4403 emit modifiedChanged(mModified);
4403 4404
4404} 4405}
4405 4406
4406bool CalendarView::isReadOnly() 4407bool CalendarView::isReadOnly()
4407{ 4408{
4408 return mReadOnly; 4409 return mReadOnly;
4409} 4410}
4410 4411
4411void CalendarView::setReadOnly(bool readOnly) 4412void CalendarView::setReadOnly(bool readOnly)
4412{ 4413{
4413 if (mReadOnly != readOnly) { 4414 if (mReadOnly != readOnly) {
4414 mReadOnly = readOnly; 4415 mReadOnly = readOnly;
4415 emit readOnlyChanged(mReadOnly); 4416 emit readOnlyChanged(mReadOnly);
4416 } 4417 }
4417} 4418}
4418 4419
4419bool CalendarView::isModified() 4420bool CalendarView::isModified()
4420{ 4421{
4421 return mModified; 4422 return mModified;
4422} 4423}
4423void CalendarView::slotprintSelInc() 4424void CalendarView::slotprintSelInc()
4424{ 4425{
4425 if ( currentSelection() == 0 ) { 4426 if ( currentSelection() == 0 ) {
4426 KMessageBox::sorry(this,i18n("There is nothing selected!")); 4427 KMessageBox::sorry(this,i18n("There is nothing selected!"));
4427 return; 4428 return;
4428 } 4429 }
4429 showIncidence(); 4430 showIncidence();
4430 getEventViewerDialog()->print(); 4431 getEventViewerDialog()->print();
4431 4432
4432} 4433}
4433void CalendarView::printSetup() 4434void CalendarView::printSetup()
4434{ 4435{
4435#ifndef KORG_NOPRINTER 4436#ifndef KORG_NOPRINTER
4436 createPrinter(); 4437 createPrinter();
4437 4438
4438 mCalPrinter->setupPrinter(); 4439 mCalPrinter->setupPrinter();
4439#endif 4440#endif
4440} 4441}
4441 4442
4442void CalendarView::print() 4443void CalendarView::print()
4443{ 4444{
4444#ifndef KORG_NOPRINTER 4445#ifndef KORG_NOPRINTER
4445 createPrinter(); 4446 createPrinter();
4446 4447
4447 DateList tmpDateList = mNavigator->selectedDates(); 4448 DateList tmpDateList = mNavigator->selectedDates();
4448 mCalPrinter->print(CalPrinter::Month, 4449 mCalPrinter->print(CalPrinter::Month,
4449 tmpDateList.first(), tmpDateList.last()); 4450 tmpDateList.first(), tmpDateList.last());
4450#endif 4451#endif
4451} 4452}
4452 4453
4453void CalendarView::printPreview() 4454void CalendarView::printPreview()
4454{ 4455{
4455#ifndef KORG_NOPRINTER 4456#ifndef KORG_NOPRINTER
4456 kdDebug() << "CalendarView::printPreview()" << endl; 4457 kdDebug() << "CalendarView::printPreview()" << endl;
4457 4458
4458 createPrinter(); 4459 createPrinter();
4459 4460
4460 DateList tmpDateList = mNavigator->selectedDates(); 4461 DateList tmpDateList = mNavigator->selectedDates();
4461 4462
4462 mViewManager->currentView()->printPreview(mCalPrinter,tmpDateList.first(), 4463 mViewManager->currentView()->printPreview(mCalPrinter,tmpDateList.first(),
4463 tmpDateList.last()); 4464 tmpDateList.last());
4464#endif 4465#endif
4465} 4466}
4466 4467bool CalendarView::exportICalendar( QString filename )
4467void CalendarView::exportICalendar()
4468{ 4468{
4469 QString filename = KFileDialog::getSaveFileName("icalout.ics",i18n("*.ics|ICalendars"),this);
4470
4471 // Force correct extension 4469 // Force correct extension
4472 if (filename.right(4) != ".ics") filename += ".ics"; 4470 if (filename.right(4) != ".ics") filename += ".ics";
4473 4471
4474 FileStorage storage( mCalendar, filename, new ICalFormat() ); 4472 FileStorage storage( mCalendar, filename, new ICalFormat() );
4475 storage.save(); 4473 return storage.save();
4474}
4475
4476bool CalendarView::exportICalendar()
4477{
4478 return exportICalendar( KFileDialog::getSaveFileName("icalout.ics",i18n("*.ics|ICalendars"),this) );
4476} 4479}
4477 4480
4478bool CalendarView::exportVCalendar( QString filename ) 4481bool CalendarView::exportVCalendar( QString filename )
4479{ 4482{
4480 if (mCalendar->journals().count() > 0) { 4483 if (mCalendar->journals().count() > 0) {
4481 int result = KMessageBox::warningContinueCancel(this, 4484 int result = KMessageBox::warningContinueCancel(this,
4482 i18n("The journal entries can not be\nexported to a vCalendar file."), 4485 i18n("The journal entries can not be\nexported to a vCalendar file."),
4483 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"), 4486 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"),
4484 true); 4487 true);
4485 if (result != KMessageBox::Continue) return false; 4488 if (result != KMessageBox::Continue) return false;
4486 } 4489 }
4487 4490
4488 //QString filename = KFileDialog::getSaveFileName("vcalout.vcs",i18n("*.vcs|VCalendars"),this); 4491 //QString filename = KFileDialog::getSaveFileName("vcalout.vcs",i18n("*.vcs|VCalendars"),this);
4489 4492
4490 // Force correct extension 4493 // Force correct extension
4491 if (filename.right(4) != ".vcs") filename += ".vcs"; 4494 if (filename.right(4) != ".vcs") filename += ".vcs";
4492 4495
4493 FileStorage storage( mCalendar, filename, new VCalFormat ); 4496 FileStorage storage( mCalendar, filename, new VCalFormat );
4494 return storage.save(); 4497 return storage.save();
4495 4498
4496} 4499}
4497 4500
4498void CalendarView::eventUpdated(Incidence *) 4501void CalendarView::eventUpdated(Incidence *)
4499{ 4502{
4500 setModified(); 4503 setModified();
4501 // Don't call updateView here. The code, which has caused the update of the 4504 // Don't call updateView here. The code, which has caused the update of the
4502 // event is responsible for updating the view. 4505 // event is responsible for updating the view.
4503 // updateView(); 4506 // updateView();
4504} 4507}
4505 4508
4506void CalendarView::adaptNavigationUnits() 4509void CalendarView::adaptNavigationUnits()
4507{ 4510{
4508 if (mViewManager->currentView()->isEventView()) { 4511 if (mViewManager->currentView()->isEventView()) {
4509 int days = mViewManager->currentView()->currentDateCount(); 4512 int days = mViewManager->currentView()->currentDateCount();
4510 if (days == 1) { 4513 if (days == 1) {
4511 emit changeNavStringPrev(i18n("&Previous Day")); 4514 emit changeNavStringPrev(i18n("&Previous Day"));
4512 emit changeNavStringNext(i18n("&Next Day")); 4515 emit changeNavStringNext(i18n("&Next Day"));
4513 } else { 4516 } else {
4514 emit changeNavStringPrev(i18n("&Previous Week")); 4517 emit changeNavStringPrev(i18n("&Previous Week"));
4515 emit changeNavStringNext(i18n("&Next Week")); 4518 emit changeNavStringNext(i18n("&Next Week"));
4516 } 4519 }
4517 } 4520 }
4518} 4521}
4519 4522
4520void CalendarView::processMainViewSelection( Incidence *incidence ) 4523void CalendarView::processMainViewSelection( Incidence *incidence )
4521{ 4524{
4522 if ( incidence ) mTodoList->clearSelection(); 4525 if ( incidence ) mTodoList->clearSelection();
4523 processIncidenceSelection( incidence ); 4526 processIncidenceSelection( incidence );
4524} 4527}
4525 4528
4526void CalendarView::processTodoListSelection( Incidence *incidence ) 4529void CalendarView::processTodoListSelection( Incidence *incidence )
4527{ 4530{
4528 if ( incidence && mViewManager->currentView() ) { 4531 if ( incidence && mViewManager->currentView() ) {
4529 mViewManager->currentView()->clearSelection(); 4532 mViewManager->currentView()->clearSelection();
4530 } 4533 }
4531 processIncidenceSelection( incidence ); 4534 processIncidenceSelection( incidence );
4532} 4535}
4533 4536
4534void CalendarView::processIncidenceSelection( Incidence *incidence ) 4537void CalendarView::processIncidenceSelection( Incidence *incidence )
4535{ 4538{
4536 emit incidenceSelected( incidence ); 4539 emit incidenceSelected( incidence );
4537 if ( incidence == mSelectedIncidence ) return; 4540 if ( incidence == mSelectedIncidence ) return;
4538 mSelectedIncidence = incidence; 4541 mSelectedIncidence = incidence;
4539 4542
4540 if ( incidence && incidence->typeID() == eventID ) { 4543 if ( incidence && incidence->typeID() == eventID ) {
4541 Event *event = static_cast<Event *>( incidence ); 4544 Event *event = static_cast<Event *>( incidence );
4542 if ( event->organizer() == KOPrefs::instance()->email() ) { 4545 if ( event->organizer() == KOPrefs::instance()->email() ) {
4543 emit organizerEventsSelected( true ); 4546 emit organizerEventsSelected( true );
4544 } else { 4547 } else {
4545 emit organizerEventsSelected(false); 4548 emit organizerEventsSelected(false);
4546 } 4549 }
4547 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails, 4550 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails,
4548 KOPrefs::instance()->email() ) ) { 4551 KOPrefs::instance()->email() ) ) {
4549 emit groupEventsSelected( true ); 4552 emit groupEventsSelected( true );
4550 } else { 4553 } else {
4551 emit groupEventsSelected(false); 4554 emit groupEventsSelected(false);
4552 } 4555 }
4553 return; 4556 return;
4554 } else { 4557 } else {
4555 if ( incidence && incidence->typeID() == todoID ) { 4558 if ( incidence && incidence->typeID() == todoID ) {
4556 emit todoSelected( true ); 4559 emit todoSelected( true );
4557 Todo *event = static_cast<Todo *>( incidence ); 4560 Todo *event = static_cast<Todo *>( incidence );
4558 if ( event->organizer() == KOPrefs::instance()->email() ) { 4561 if ( event->organizer() == KOPrefs::instance()->email() ) {
4559 emit organizerEventsSelected( true ); 4562 emit organizerEventsSelected( true );
4560 } else { 4563 } else {
4561 emit organizerEventsSelected(false); 4564 emit organizerEventsSelected(false);
4562 } 4565 }
4563 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails, 4566 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails,
4564 KOPrefs::instance()->email() ) ) { 4567 KOPrefs::instance()->email() ) ) {
4565 emit groupEventsSelected( true ); 4568 emit groupEventsSelected( true );
4566 } else { 4569 } else {
4567 emit groupEventsSelected(false); 4570 emit groupEventsSelected(false);
4568 } 4571 }
4569 return; 4572 return;
4570 } else { 4573 } else {
4571 emit todoSelected( false ); 4574 emit todoSelected( false );
diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h
index b223315..8670832 100644
--- a/korganizer/calendarview.h
+++ b/korganizer/calendarview.h
@@ -283,193 +283,194 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser
283 /** Delete the supplied incidence. It calls the correct deleteXXX method*/ 283 /** Delete the supplied incidence. It calls the correct deleteXXX method*/
284 void deleteIncidence(Incidence *); 284 void deleteIncidence(Incidence *);
285 void cloneIncidence(Incidence *); 285 void cloneIncidence(Incidence *);
286 void cancelIncidence(Incidence *); 286 void cancelIncidence(Incidence *);
287 /** Create an editor for the supplied event. */ 287 /** Create an editor for the supplied event. */
288 void editEvent(Event *); 288 void editEvent(Event *);
289 /** Delete the supplied event. */ 289 /** Delete the supplied event. */
290 void deleteEvent(Event *); 290 void deleteEvent(Event *);
291 /** Delete the event with the given unique ID. Returns false, if event wasn't 291 /** Delete the event with the given unique ID. Returns false, if event wasn't
292 found. */ 292 found. */
293 bool deleteEvent(const QString &uid); 293 bool deleteEvent(const QString &uid);
294 /** Create a read-only viewer dialog for the supplied event. */ 294 /** Create a read-only viewer dialog for the supplied event. */
295 void showEvent(Event *); 295 void showEvent(Event *);
296 296
297 void editJournal(Journal *); 297 void editJournal(Journal *);
298 void showJournal(Journal *); 298 void showJournal(Journal *);
299 void deleteJournal(Journal *); 299 void deleteJournal(Journal *);
300 /** Create an editor dialog for a todo */ 300 /** Create an editor dialog for a todo */
301 void editTodo(Todo *); 301 void editTodo(Todo *);
302 /** Create a read-only viewer dialog for the supplied todo */ 302 /** Create a read-only viewer dialog for the supplied todo */
303 void showTodo(Todo *); 303 void showTodo(Todo *);
304 /** create new todo */ 304 /** create new todo */
305 void newTodo(); 305 void newTodo();
306 void newTodoDateTime(QDateTime, bool allday); 306 void newTodoDateTime(QDateTime, bool allday);
307 /** create new todo with a parent todo */ 307 /** create new todo with a parent todo */
308 void newSubTodo(); 308 void newSubTodo();
309 /** create new todo with a parent todo */ 309 /** create new todo with a parent todo */
310 void newSubTodo(Todo *); 310 void newSubTodo(Todo *);
311 /** Delete todo */ 311 /** Delete todo */
312 void deleteTodo(Todo *); 312 void deleteTodo(Todo *);
313 313
314 314
315 /** Check if clipboard contains vCalendar event. The signal pasteEnabled() is 315 /** Check if clipboard contains vCalendar event. The signal pasteEnabled() is
316 * emitted as result. */ 316 * emitted as result. */
317 void checkClipboard(); 317 void checkClipboard();
318 318
319 /** using the KConfig associated with the kapp variable, read in the 319 /** using the KConfig associated with the kapp variable, read in the
320 * settings from the config file. 320 * settings from the config file.
321 */ 321 */
322 void readSettings(); 322 void readSettings();
323 323
324 /** write current state to config file. */ 324 /** write current state to config file. */
325 void writeSettings(); 325 void writeSettings();
326 326
327 /** read settings for calendar filters */ 327 /** read settings for calendar filters */
328 void readFilterSettings(KConfig *config); 328 void readFilterSettings(KConfig *config);
329 329
330 /** write settings for calendar filters */ 330 /** write settings for calendar filters */
331 void writeFilterSettings(KConfig *config); 331 void writeFilterSettings(KConfig *config);
332 332
333 /** passes on the message that an event has changed to the currently 333 /** passes on the message that an event has changed to the currently
334 * activated view so that it can make appropriate display changes. */ 334 * activated view so that it can make appropriate display changes. */
335 void changeEventDisplay(Event *, int); 335 void changeEventDisplay(Event *, int);
336 void changeIncidenceDisplay(Incidence *, int); 336 void changeIncidenceDisplay(Incidence *, int);
337 void changeTodoDisplay(Todo *, int); 337 void changeTodoDisplay(Todo *, int);
338 338
339 void eventAdded(Event *); 339 void eventAdded(Event *);
340 void eventChanged(Event *); 340 void eventChanged(Event *);
341 void eventToBeDeleted(Event *); 341 void eventToBeDeleted(Event *);
342 void eventDeleted(); 342 void eventDeleted();
343 343
344 void todoAdded(Todo *); 344 void todoAdded(Todo *);
345 void todoChanged(Todo *); 345 void todoChanged(Todo *);
346 void todoToBeDeleted(Todo *); 346 void todoToBeDeleted(Todo *);
347 void todoDeleted(); 347 void todoDeleted();
348 348
349 void updateView(const QDate &start, const QDate &end); 349 void updateView(const QDate &start, const QDate &end);
350 void updateView(); 350 void updateView();
351 void clearAllViews(); 351 void clearAllViews();
352 352
353 /** Full update of visible todo views */ 353 /** Full update of visible todo views */
354 void updateTodoViews(); 354 void updateTodoViews();
355 355
356 void updateUnmanagedViews(); 356 void updateUnmanagedViews();
357 357
358 /** cut the current appointment to the clipboard */ 358 /** cut the current appointment to the clipboard */
359 void edit_cut(); 359 void edit_cut();
360 360
361 /** copy the current appointment(s) to the clipboard */ 361 /** copy the current appointment(s) to the clipboard */
362 void edit_copy(); 362 void edit_copy();
363 363
364 /** paste the current vobject(s) in the clipboard buffer into calendar */ 364 /** paste the current vobject(s) in the clipboard buffer into calendar */
365 void edit_paste(); 365 void edit_paste();
366 366
367 /** edit viewing and configuration options. */ 367 /** edit viewing and configuration options. */
368 void edit_options(); 368 void edit_options();
369 void edit_global_options(); 369 void edit_global_options();
370 /** 370 /**
371 Functions for printing, previewing a print, and setting up printing 371 Functions for printing, previewing a print, and setting up printing
372 parameters. 372 parameters.
373 */ 373 */
374 void print(); 374 void print();
375 void printSetup(); 375 void printSetup();
376 void printPreview(); 376 void printPreview();
377 377
378 /** Export as iCalendar file */ 378 /** Export as iCalendar file */
379 void exportICalendar(); 379 bool exportICalendar();
380 bool exportICalendar( QString fn );
380 381
381 /** Export as vCalendar file */ 382 /** Export as vCalendar file */
382 bool exportVCalendar( QString fn); 383 bool exportVCalendar( QString fn);
383 384
384 /** pop up a dialog to show an existing appointment. */ 385 /** pop up a dialog to show an existing appointment. */
385 void appointment_show(); 386 void appointment_show();
386 /** 387 /**
387 * pop up an Appointment Dialog to edit an existing appointment.Get 388 * pop up an Appointment Dialog to edit an existing appointment.Get
388 * information on the appointment from the list of unique IDs that is 389 * information on the appointment from the list of unique IDs that is
389 * currently in the View, called currIds. 390 * currently in the View, called currIds.
390 */ 391 */
391 void appointment_edit(); 392 void appointment_edit();
392 /** 393 /**
393 * pop up dialog confirming deletion of currently selected event in the 394 * pop up dialog confirming deletion of currently selected event in the
394 * View. 395 * View.
395 */ 396 */
396 void appointment_delete(); 397 void appointment_delete();
397 398
398 /** mails the currently selected event to a particular user as a vCalendar 399 /** mails the currently selected event to a particular user as a vCalendar
399 attachment. */ 400 attachment. */
400 void action_mail(); 401 void action_mail();
401 402
402 /* frees a subtodo from it's relation */ 403 /* frees a subtodo from it's relation */
403 void todo_unsub( Todo * ); 404 void todo_unsub( Todo * );
404 void todo_resub( Todo * parent, Todo * sub ); 405 void todo_resub( Todo * parent, Todo * sub );
405 406
406 /** Take ownership of selected event. */ 407 /** Take ownership of selected event. */
407 void takeOverEvent(); 408 void takeOverEvent();
408 409
409 /** Take ownership of all events in calendar. */ 410 /** Take ownership of all events in calendar. */
410 void takeOverCalendar(); 411 void takeOverCalendar();
411 412
412 /** query whether or not the calendar is "dirty". */ 413 /** query whether or not the calendar is "dirty". */
413 bool isModified(); 414 bool isModified();
414 /** set the state of calendar. Modified means "dirty", i.e. needing a save. */ 415 /** set the state of calendar. Modified means "dirty", i.e. needing a save. */
415 void setModified(bool modified=true); 416 void setModified(bool modified=true);
416 417
417 /** query if the calendar is read-only. */ 418 /** query if the calendar is read-only. */
418 bool isReadOnly(); 419 bool isReadOnly();
419 /** set state of calendar to read-only */ 420 /** set state of calendar to read-only */
420 void setReadOnly(bool readOnly=true); 421 void setReadOnly(bool readOnly=true);
421 422
422 void eventUpdated(Incidence *); 423 void eventUpdated(Incidence *);
423 424
424 /* iTIP scheduling actions */ 425 /* iTIP scheduling actions */
425 void schedule_publish(Incidence *incidence = 0); 426 void schedule_publish(Incidence *incidence = 0);
426 void schedule_request(Incidence *incidence = 0); 427 void schedule_request(Incidence *incidence = 0);
427 void schedule_refresh(Incidence *incidence = 0); 428 void schedule_refresh(Incidence *incidence = 0);
428 void schedule_cancel(Incidence *incidence = 0); 429 void schedule_cancel(Incidence *incidence = 0);
429 void schedule_add(Incidence *incidence = 0); 430 void schedule_add(Incidence *incidence = 0);
430 void schedule_reply(Incidence *incidence = 0); 431 void schedule_reply(Incidence *incidence = 0);
431 void schedule_counter(Incidence *incidence = 0); 432 void schedule_counter(Incidence *incidence = 0);
432 void schedule_declinecounter(Incidence *incidence = 0); 433 void schedule_declinecounter(Incidence *incidence = 0);
433 void schedule_publish_freebusy(int daysToPublish = 30); 434 void schedule_publish_freebusy(int daysToPublish = 30);
434 435
435 void openAddressbook(); 436 void openAddressbook();
436 437
437 void editFilters(); 438 void editFilters();
438 void toggleFilerEnabled(); 439 void toggleFilerEnabled();
439 QPtrList<CalFilter> filters(); 440 QPtrList<CalFilter> filters();
440 void toggleFilter(); 441 void toggleFilter();
441 void showFilter(bool visible); 442 void showFilter(bool visible);
442 void updateFilter(); 443 void updateFilter();
443 void filterEdited(); 444 void filterEdited();
444 void selectFilter( int ); 445 void selectFilter( int );
445 KOFilterView *filterView(); 446 KOFilterView *filterView();
446 447
447 void showIntro(); 448 void showIntro();
448 449
449 /** Move the curdatepient view date to today */ 450 /** Move the curdatepient view date to today */
450 void goToday(); 451 void goToday();
451 452
452 /** Move to the next date(s) in the current view */ 453 /** Move to the next date(s) in the current view */
453 void goNext(); 454 void goNext();
454 455
455 /** Move to the previous date(s) in the current view */ 456 /** Move to the previous date(s) in the current view */
456 void goPrevious(); 457 void goPrevious();
457 /** Move to the next date(s) in the current view */ 458 /** Move to the next date(s) in the current view */
458 void goNextMonth(); 459 void goNextMonth();
459 460
460 /** Move to the previous date(s) in the current view */ 461 /** Move to the previous date(s) in the current view */
461 void goPreviousMonth(); 462 void goPreviousMonth();
462 463
463 void toggleExpand(); 464 void toggleExpand();
464 void toggleDateNavigatorWidget(); 465 void toggleDateNavigatorWidget();
465 void toggleAllDaySize(); 466 void toggleAllDaySize();
466 467
467 /** Look for new messages in the inbox */ 468 /** Look for new messages in the inbox */
468 void lookForIncomingMessages(); 469 void lookForIncomingMessages();
469 /** Look for new messages in the outbox */ 470 /** Look for new messages in the outbox */
470 void lookForOutgoingMessages(); 471 void lookForOutgoingMessages();
471 472
472 void processMainViewSelection( Incidence * ); 473 void processMainViewSelection( Incidence * );
473 void processTodoListSelection( Incidence * ); 474 void processTodoListSelection( Incidence * );
474 475
475 void processIncidenceSelection( Incidence * ); 476 void processIncidenceSelection( Incidence * );
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index 2af605f..98d3e35 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -430,216 +430,235 @@ void MainWindow::loadDataAfterStart()
430 //QTimer::singleShot( 1000, mView, SLOT ( checkFiles() )); 430 //QTimer::singleShot( 1000, mView, SLOT ( checkFiles() ));
431 mView->setModified( false ); 431 mView->setModified( false );
432 mBlockAtStartup = false; 432 mBlockAtStartup = false;
433 mView->setModified( false ); 433 mView->setModified( false );
434 connect(mView , SIGNAL( save() ), this, SLOT( save() ) ); 434 connect(mView , SIGNAL( save() ), this, SLOT( save() ) );
435 processIncidenceSelection( 0 ); 435 processIncidenceSelection( 0 );
436 connect( mView, SIGNAL( incidenceSelected( Incidence * ) ), 436 connect( mView, SIGNAL( incidenceSelected( Incidence * ) ),
437 SLOT( processIncidenceSelection( Incidence * ) ) ); 437 SLOT( processIncidenceSelection( Incidence * ) ) );
438 connect( mView, SIGNAL( modifiedChanged( bool ) ), 438 connect( mView, SIGNAL( modifiedChanged( bool ) ),
439 SLOT( slotModifiedChanged( bool ) ) ); 439 SLOT( slotModifiedChanged( bool ) ) );
440 440
441#ifndef DESKTOP_VERSION 441#ifndef DESKTOP_VERSION
442 connect(qApp, SIGNAL (appMessage ( const QCString &, const QByteArray & )), ExternalAppHandler::instance(), SLOT (appMessage ( const QCString &, const QByteArray & ))); 442 connect(qApp, SIGNAL (appMessage ( const QCString &, const QByteArray & )), ExternalAppHandler::instance(), SLOT (appMessage ( const QCString &, const QByteArray & )));
443 connect( qApp, SIGNAL (appMessage ( const QCString &, const QByteArray & )), this, SLOT(recieve( const QCString&, const QByteArray& ))); 443 connect( qApp, SIGNAL (appMessage ( const QCString &, const QByteArray & )), this, SLOT(recieve( const QCString&, const QByteArray& )));
444 disconnect( qApp, SIGNAL (appMessage ( const QCString &, const QByteArray & )), this, SLOT(receiveStart( const QCString&, const QByteArray& ))); 444 disconnect( qApp, SIGNAL (appMessage ( const QCString &, const QByteArray & )), this, SLOT(receiveStart( const QCString&, const QByteArray& )));
445 if ( !mCStringMess.isEmpty() ) 445 if ( !mCStringMess.isEmpty() )
446 recieve( mCStringMess, mByteData ); 446 recieve( mCStringMess, mByteData );
447#endif 447#endif
448 448
449 449
450 QTimer::singleShot( 1000, mView, SLOT ( checkFiles() )); 450 QTimer::singleShot( 1000, mView, SLOT ( checkFiles() ));
451} 451}
452 452
453void MainWindow::slotResetFocus() 453void MainWindow::slotResetFocus()
454{ 454{
455 //qDebug(" CalendarView::slotResetFocus() %x %x %x %x", qApp->focusWidget(), menuBar1, mView,iconToolBar); 455 //qDebug(" CalendarView::slotResetFocus() %x %x %x %x", qApp->focusWidget(), menuBar1, mView,iconToolBar);
456 mFocusLoop = 3; 456 mFocusLoop = 3;
457 QTimer::singleShot( 0, this, SLOT(slotResetFocusLoop() )); 457 QTimer::singleShot( 0, this, SLOT(slotResetFocusLoop() ));
458} 458}
459void MainWindow::slotResetFocusLoop() 459void MainWindow::slotResetFocusLoop()
460{ 460{
461 --mFocusLoop; 461 --mFocusLoop;
462 QWidget* fw = mView->viewManager()->currentView(); 462 QWidget* fw = mView->viewManager()->currentView();
463 if ( fw ) { 463 if ( fw ) {
464 //qDebug("loop "); 464 //qDebug("loop ");
465 fw->setFocus(); 465 fw->setFocus();
466 if ( qApp->focusWidget() != fw && mFocusLoop > 0 ) 466 if ( qApp->focusWidget() != fw && mFocusLoop > 0 )
467 QTimer::singleShot( 0, this, SLOT(slotResetFocusLoop() )); 467 QTimer::singleShot( 0, this, SLOT(slotResetFocusLoop() ));
468 } 468 }
469 469
470} 470}
471void MainWindow::disableBR(bool b) 471void MainWindow::disableBR(bool b)
472{ 472{
473#ifndef DESKTOP_VERSION 473#ifndef DESKTOP_VERSION
474 if ( b ) { 474 if ( b ) {
475 if ( infrared ) { 475 if ( infrared ) {
476 toggleBeamReceive(); 476 toggleBeamReceive();
477 mBRdisabled = true; 477 mBRdisabled = true;
478 } 478 }
479 mBRdisabled = true; 479 mBRdisabled = true;
480 } else { 480 } else {
481 if ( mBRdisabled ) { 481 if ( mBRdisabled ) {
482 mBRdisabled = false; 482 mBRdisabled = false;
483 //makes no sense,because other cal ap is probably running 483 //makes no sense,because other cal ap is probably running
484 // toggleBeamReceive(); 484 // toggleBeamReceive();
485 } 485 }
486 } 486 }
487#endif 487#endif
488 488
489} 489}
490bool MainWindow::beamReceiveEnabled() 490bool MainWindow::beamReceiveEnabled()
491{ 491{
492#ifndef DESKTOP_VERSION 492#ifndef DESKTOP_VERSION
493 return ( infrared != 0 ); 493 return ( infrared != 0 );
494#endif 494#endif
495 return false; 495 return false;
496} 496}
497 497
498void MainWindow::toggleBeamReceive() 498void MainWindow::toggleBeamReceive()
499{ 499{
500 if ( mBRdisabled ) 500 if ( mBRdisabled )
501 return; 501 return;
502#ifndef DESKTOP_VERSION 502#ifndef DESKTOP_VERSION
503 if ( infrared ) { 503 if ( infrared ) {
504 qDebug("KO: Disable BeamReceive "); 504 qDebug("KO: Disable BeamReceive ");
505 delete infrared; 505 delete infrared;
506 infrared = 0; 506 infrared = 0;
507 brAction->setOn(false); 507 brAction->setOn(false);
508 return; 508 return;
509 } 509 }
510 qDebug("KO: Enable BeamReceive "); 510 qDebug("KO: Enable BeamReceive ");
511 brAction->setOn(true); 511 brAction->setOn(true);
512 infrared = new QCopChannel("QPE/Application/datebook",this, "channel" ) ; 512 infrared = new QCopChannel("QPE/Application/datebook",this, "channel" ) ;
513 QObject::connect( infrared, SIGNAL (received ( const QCString &, const QByteArray & )),this, SLOT(recieve( const QCString&, const QByteArray& ))); 513 QObject::connect( infrared, SIGNAL (received ( const QCString &, const QByteArray & )),this, SLOT(recieve( const QCString&, const QByteArray& )));
514#endif 514#endif
515} 515}
516void MainWindow::showMaximized () 516void MainWindow::showMaximized ()
517{ 517{
518#ifndef DESKTOP_VERSION 518#ifndef DESKTOP_VERSION
519 if ( ! globalFlagBlockStartup ) 519 if ( ! globalFlagBlockStartup )
520 if ( mClosed ) 520 if ( mClosed )
521 mView->goToday(); 521 mView->goToday();
522#endif 522#endif
523 QWidget::showMaximized () ; 523 QWidget::showMaximized () ;
524 mClosed = false; 524 mClosed = false;
525} 525}
526
527bool MainWindow::askForQuitOnSaveError()
528{
529 bool retval = false;
530 switch( QMessageBox::information( this, "KO/Pi",
531 i18n("Error saving data") + "!\n" +
532 i18n("You can save all data\nto another file via\nFile->Export->Export All Data") + "!\n" +
533 i18n("Do you really want\nto close KO/Pi?"),
534 i18n(" Yes, close "), i18n("No"),
535 0, 1 ) ) {
536 case 0:
537 retval = true;
538 break;
539 default:
540 break;
541 }
542 return retval;
543}
544
526void MainWindow::closeEvent( QCloseEvent* ce ) 545void MainWindow::closeEvent( QCloseEvent* ce )
527{ 546{
528 547
529 548
530 549
531 if ( ! KOPrefs::instance()->mAskForQuit ) { 550 if ( ! KOPrefs::instance()->mAskForQuit ) {
532 saveOnClose(); 551 saveOnClose();
533 if ( mCalendarModifiedFlag ) { 552 if ( mCalendarModifiedFlag && !askForQuitOnSaveError() ) {
534 ce->ignore(); 553 ce->ignore();
535 return; 554 return;
536 } 555 }
537 mClosed = true; 556 mClosed = true;
538 ce->accept(); 557 ce->accept();
539 return; 558 return;
540 559
541 } 560 }
542 561
543 switch( QMessageBox::information( this, "KO/Pi", 562 switch( QMessageBox::information( this, "KO/Pi",
544 i18n("Do you really want\nto close KO/Pi?"), 563 i18n("Do you really want\nto close KO/Pi?"),
545 i18n("Close"), i18n("No"), 564 i18n("Close"), i18n("No"),
546 0, 0 ) ) { 565 0, 0 ) ) {
547 case 0: 566 case 0:
548 saveOnClose(); 567 saveOnClose();
549 if ( mCalendarModifiedFlag ) { 568 if ( mCalendarModifiedFlag && !askForQuitOnSaveError() ) {
550 ce->ignore(); 569 ce->ignore();
551 return; 570 return;
552 } 571 }
553 mClosed = true; 572 mClosed = true;
554 ce->accept(); 573 ce->accept();
555 break; 574 break;
556 case 1: 575 case 1:
557 ce->ignore(); 576 ce->ignore();
558 break; 577 break;
559 case 2: 578 case 2:
560 579
561 default: 580 default:
562 break; 581 break;
563 } 582 }
564 583
565 584
566} 585}
567void MainWindow::receiveStart( const QCString& cmsg, const QByteArray& data ) 586void MainWindow::receiveStart( const QCString& cmsg, const QByteArray& data )
568{ 587{
569 qDebug("KO: QCOP start message received: %s ", cmsg.data() ); 588 qDebug("KO: QCOP start message received: %s ", cmsg.data() );
570 mCStringMess = cmsg; 589 mCStringMess = cmsg;
571 mByteData = data; 590 mByteData = data;
572} 591}
573void MainWindow::recieve( const QCString& cmsg, const QByteArray& data ) 592void MainWindow::recieve( const QCString& cmsg, const QByteArray& data )
574{ 593{
575 QDataStream stream( data, IO_ReadOnly ); 594 QDataStream stream( data, IO_ReadOnly );
576 // QMessageBox::about( this, "About KOrganizer/Pi", "*" +msg +"*" ); 595 // QMessageBox::about( this, "About KOrganizer/Pi", "*" +msg +"*" );
577 //QString datamess; 596 //QString datamess;
578 //qDebug("message "); 597 //qDebug("message ");
579 qDebug("KO: QCOP message received: %s ", cmsg.data() ); 598 qDebug("KO: QCOP message received: %s ", cmsg.data() );
580 599
581 if ( cmsg == "setDocument(QString)" ) { 600 if ( cmsg == "setDocument(QString)" ) {
582 QDataStream stream( data, IO_ReadOnly ); 601 QDataStream stream( data, IO_ReadOnly );
583 QString fileName; 602 QString fileName;
584 stream >> fileName; 603 stream >> fileName;
585 //qDebug("filename %s ", fileName.latin1()); 604 //qDebug("filename %s ", fileName.latin1());
586 showMaximized(); 605 showMaximized();
587 raise(); 606 raise();
588 KOPrefs::instance()->mLastSyncedLocalFile = fileName ; 607 KOPrefs::instance()->mLastSyncedLocalFile = fileName ;
589 mSyncManager->slotSyncMenu( 1002 ); 608 mSyncManager->slotSyncMenu( 1002 );
590 return; 609 return;
591 } 610 }
592 611
593 if ( cmsg == "-writeFile" ) { 612 if ( cmsg == "-writeFile" ) {
594 // I made from the "-writeFile" an "-writeAlarm" 613 // I made from the "-writeFile" an "-writeAlarm"
595 mView->viewManager()->showWhatsNextView(); 614 mView->viewManager()->showWhatsNextView();
596 mCalendar->checkAlarmForIncidence( 0, true); 615 mCalendar->checkAlarmForIncidence( 0, true);
597 showMaximized(); 616 showMaximized();
598 raise(); 617 raise();
599 return; 618 return;
600 619
601 } 620 }
602 if ( cmsg == "-writeFileSilent" ) { 621 if ( cmsg == "-writeFileSilent" ) {
603 // I made from the "-writeFile" an "-writeAlarm" 622 // I made from the "-writeFile" an "-writeAlarm"
604 // mView->viewManager()->showWhatsNextView(); 623 // mView->viewManager()->showWhatsNextView();
605 mCalendar->checkAlarmForIncidence( 0, true); 624 mCalendar->checkAlarmForIncidence( 0, true);
606 //showMaximized(); 625 //showMaximized();
607 //raise(); 626 //raise();
608 hide(); 627 hide();
609 return; 628 return;
610 } 629 }
611 if ( cmsg == "-newCountdown" ) { 630 if ( cmsg == "-newCountdown" ) {
612 qDebug("newCountdown "); 631 qDebug("newCountdown ");
613 632
614 } 633 }
615 QString msg ; 634 QString msg ;
616 QString allmsg = cmsg; 635 QString allmsg = cmsg;
617 while ( allmsg.length() > 0 ) { 636 while ( allmsg.length() > 0 ) {
618 int nextC = allmsg.find( "-", 1 ); 637 int nextC = allmsg.find( "-", 1 );
619 if ( nextC == -1 ) { 638 if ( nextC == -1 ) {
620 msg = allmsg; 639 msg = allmsg;
621 allmsg = ""; 640 allmsg = "";
622 } else{ 641 } else{
623 msg = allmsg.left( nextC ); 642 msg = allmsg.left( nextC );
624 allmsg = allmsg.mid( nextC, allmsg.length()-nextC ); 643 allmsg = allmsg.mid( nextC, allmsg.length()-nextC );
625 } 644 }
626 //qDebug("msg: %s all: %s ", msg.latin1(), allmsg.latin1() ); 645 //qDebug("msg: %s all: %s ", msg.latin1(), allmsg.latin1() );
627 if ( msg == "-newEvent" ) { 646 if ( msg == "-newEvent" ) {
628 QTimer::singleShot( 0, mView, SLOT ( newEvent())); 647 QTimer::singleShot( 0, mView, SLOT ( newEvent()));
629 } 648 }
630 if ( msg == "-newTodo" ) { 649 if ( msg == "-newTodo" ) {
631 QTimer::singleShot( 0, mView, SLOT ( newTodo())); 650 QTimer::singleShot( 0, mView, SLOT ( newTodo()));
632 } 651 }
633 if ( msg == "-showWN" ) { 652 if ( msg == "-showWN" ) {
634 mView->viewManager()->showWhatsNextView(); 653 mView->viewManager()->showWhatsNextView();
635 } 654 }
636 if ( msg == "-showTodo" ) { 655 if ( msg == "-showTodo" ) {
637 mView->viewManager()->showTodoView(); 656 mView->viewManager()->showTodoView();
638 } 657 }
639 if ( msg == "-showList" ) { 658 if ( msg == "-showList" ) {
640 mView->viewManager()->showListView(); 659 mView->viewManager()->showListView();
641 } 660 }
642 else if ( msg == "-showDay" ) { 661 else if ( msg == "-showDay" ) {
643 mView->viewManager()->showDayView(); 662 mView->viewManager()->showDayView();
644 } 663 }
645 else if ( msg == "-showWWeek" ) { 664 else if ( msg == "-showWWeek" ) {
@@ -1072,192 +1091,196 @@ void MainWindow::initActions()
1072 1091
1073 1092
1074#if 0 1093#if 0
1075 action = new QAction( "view_timespan", "Time Span", 0, this ); 1094 action = new QAction( "view_timespan", "Time Span", 0, this );
1076 action->addTo( viewMenu ); 1095 action->addTo( viewMenu );
1077 connect( action, SIGNAL( activated() ), 1096 connect( action, SIGNAL( activated() ),
1078 mView->viewManager(), SLOT( showTimeSpanView() ) ); 1097 mView->viewManager(), SLOT( showTimeSpanView() ) );
1079#endif 1098#endif
1080 1099
1081 1100
1082 1101
1083 action = new QAction( "purge_completed", i18n("Purge Completed..."), 0, 1102 action = new QAction( "purge_completed", i18n("Purge Completed..."), 0,
1084 this ); 1103 this );
1085 action->addTo( actionMenu ); 1104 action->addTo( actionMenu );
1086 connect( action, SIGNAL( activated() ), mView, SLOT( purgeCompleted() ) ); 1105 connect( action, SIGNAL( activated() ), mView, SLOT( purgeCompleted() ) );
1087 1106
1088 1107
1089 icon = loadPixmap( pathString + "search" ); 1108 icon = loadPixmap( pathString + "search" );
1090 configureToolBarMenu->insertItem(icon, i18n("Search"), 120 , 5); 1109 configureToolBarMenu->insertItem(icon, i18n("Search"), 120 , 5);
1091 1110
1092 1111
1093 1112
1094 actionMenu->insertSeparator(); 1113 actionMenu->insertSeparator();
1095 action = new QAction( "manage cat", i18n("Edit category list..."), 0, 1114 action = new QAction( "manage cat", i18n("Edit category list..."), 0,
1096 this ); 1115 this );
1097 action->addTo( actionMenu ); 1116 action->addTo( actionMenu );
1098 connect( action, SIGNAL( activated() ), mView, SLOT( editCategories() ) ); 1117 connect( action, SIGNAL( activated() ), mView, SLOT( editCategories() ) );
1099 1118
1100 action = new QAction( "manage cat", i18n("Manage new categories..."), 0, 1119 action = new QAction( "manage cat", i18n("Manage new categories..."), 0,
1101 this ); 1120 this );
1102 action->addTo( actionMenu ); 1121 action->addTo( actionMenu );
1103 connect( action, SIGNAL( activated() ), mView, SLOT( manageCategories() ) ); 1122 connect( action, SIGNAL( activated() ), mView, SLOT( manageCategories() ) );
1104 1123
1105 1124
1106 actionMenu->insertSeparator(); 1125 actionMenu->insertSeparator();
1107 icon = loadPixmap( pathString + "configure" ); 1126 icon = loadPixmap( pathString + "configure" );
1108 action = new QAction( i18n("Configure"),icon, i18n("Configure KO/Pi..."), 0, this ); 1127 action = new QAction( i18n("Configure"),icon, i18n("Configure KO/Pi..."), 0, this );
1109 action->addTo( actionMenu ); 1128 action->addTo( actionMenu );
1110 connect( action, SIGNAL( activated() ), 1129 connect( action, SIGNAL( activated() ),
1111 mView, SLOT( edit_options() ) ); 1130 mView, SLOT( edit_options() ) );
1112 action = new QAction( i18n("Configure"),icon, i18n("Configure Calendar Files..."), 0, this ); 1131 action = new QAction( i18n("Configure"),icon, i18n("Configure Calendar Files..."), 0, this );
1113 action->addTo( actionMenu ); 1132 action->addTo( actionMenu );
1114 connect( action, SIGNAL( activated() ), 1133 connect( action, SIGNAL( activated() ),
1115 this, SLOT( calHint() ) ); 1134 this, SLOT( calHint() ) );
1116 action = new QAction( i18n("Configure"),icon, i18n("Global Settings..."), 0, this ); 1135 action = new QAction( i18n("Configure"),icon, i18n("Global Settings..."), 0, this );
1117 action->addTo( actionMenu ); 1136 action->addTo( actionMenu );
1118 connect( action, SIGNAL( activated() ), 1137 connect( action, SIGNAL( activated() ),
1119 mView, SLOT( edit_global_options() ) ); 1138 mView, SLOT( edit_global_options() ) );
1120 if ( KOPrefs::instance()->mShowFullMenu ) { 1139 if ( KOPrefs::instance()->mShowFullMenu ) {
1121 actionMenu->insertItem( i18n("Configure Toolbar"),configureToolBarMenu ); 1140 actionMenu->insertItem( i18n("Configure Toolbar"),configureToolBarMenu );
1122 1141
1123 } 1142 }
1124 // actionMenu->insertSeparator(); 1143 // actionMenu->insertSeparator();
1125 action = new QAction( "import_qtopia", i18n("Import (*.ics/*.vcs) file"), 0, 1144 action = new QAction( "import_qtopia", i18n("Import (*.ics/*.vcs) file"), 0,
1126 this ); 1145 this );
1127 action->addTo( importMenu_X ); 1146 action->addTo( importMenu_X );
1128 connect( action, SIGNAL( activated() ), SLOT( importIcal() ) ); 1147 connect( action, SIGNAL( activated() ), SLOT( importIcal() ) );
1129 action = new QAction( "import_quick", i18n("Import last file"), 0, 1148 action = new QAction( "import_quick", i18n("Import last file"), 0,
1130 this ); 1149 this );
1131 action->addTo( importMenu_X ); 1150 action->addTo( importMenu_X );
1132 connect( action, SIGNAL( activated() ), SLOT( quickImportIcal() ) ); 1151 connect( action, SIGNAL( activated() ), SLOT( quickImportIcal() ) );
1133 importMenu_X->insertSeparator(); 1152 importMenu_X->insertSeparator();
1134 action = new QAction( "import_bday", i18n("Import Birthdays (KA/Pi)"), 0, 1153 action = new QAction( "import_bday", i18n("Import Birthdays (KA/Pi)"), 0,
1135 this ); 1154 this );
1136 action->addTo( importMenu_X ); 1155 action->addTo( importMenu_X );
1137 connect( action, SIGNAL( activated() ), SLOT( importBday() ) ); 1156 connect( action, SIGNAL( activated() ), SLOT( importBday() ) );
1138 //#ifndef DESKTOP_VERSION 1157 //#ifndef DESKTOP_VERSION
1139 importMenu_X->insertSeparator(); 1158 importMenu_X->insertSeparator();
1140 action = new QAction( "import_qtopia", i18n("Import Opie/Qtopia Cal."), 0, 1159 action = new QAction( "import_qtopia", i18n("Import Opie/Qtopia Cal."), 0,
1141 this ); 1160 this );
1142 action->addTo( importMenu_X ); 1161 action->addTo( importMenu_X );
1143 connect( action, SIGNAL( activated() ), SLOT( importQtopia() ) ); 1162 connect( action, SIGNAL( activated() ), SLOT( importQtopia() ) );
1144 //#else 1163 //#else
1145#ifdef _OL_IMPORT_ 1164#ifdef _OL_IMPORT_
1146 importMenu_X->insertSeparator(); 1165 importMenu_X->insertSeparator();
1147 action = new QAction( "import_ol", i18n("Import from OL"), 0, 1166 action = new QAction( "import_ol", i18n("Import from OL"), 0,
1148 this ); 1167 this );
1149 action->addTo( importMenu_X ); 1168 action->addTo( importMenu_X );
1150 connect( action, SIGNAL( activated() ), SLOT( importOL() ) ); 1169 connect( action, SIGNAL( activated() ), SLOT( importOL() ) );
1151#endif 1170#endif
1152 //#endif 1171 //#endif
1153 1172
1154 //importMenu->insertSeparator(); 1173 //importMenu->insertSeparator();
1155#if 0 1174#if 0
1156 action = new QAction( "load_cal", i18n("Load Calendar Backup"), 0, 1175 action = new QAction( "load_cal", i18n("Load Calendar Backup"), 0,
1157 this ); 1176 this );
1158 action->addTo( importMenu ); 1177 action->addTo( importMenu );
1159 connect( action, SIGNAL( activated() ), SLOT( loadCalendar() ) ); 1178 connect( action, SIGNAL( activated() ), SLOT( loadCalendar() ) );
1160#endif 1179#endif
1161 action = new QAction( "save_cal", i18n("Save Backup..."), 0, 1180 action = new QAction( "save_cal", i18n("Save Backup..."), 0,
1162 this ); 1181 this );
1163 action->addTo( importMenu ); 1182 action->addTo( importMenu );
1164 connect( action, SIGNAL( activated() ), SLOT( saveCalendar() ) ); 1183 connect( action, SIGNAL( activated() ), SLOT( saveCalendar() ) );
1165 importMenu->insertSeparator(); 1184 importMenu->insertSeparator();
1166 importMenu->insertItem( i18n("Import"), importMenu_X ); 1185 importMenu->insertItem( i18n("Import"), importMenu_X );
1167 //importMenu->insertSeparator(); 1186 //importMenu->insertSeparator();
1187 action = new QAction( "export ical", i18n("Export All Data"), 0,
1188 this );
1189 action->addTo( exportMenu_X );
1190 connect( action, SIGNAL( activated() ), SLOT( exportICalendar() ) );
1168 action = new QAction( "import_qtopia", i18n("Export VCalendar"), 0, 1191 action = new QAction( "import_qtopia", i18n("Export VCalendar"), 0,
1169 this ); 1192 this );
1170 action->addTo( exportMenu_X ); 1193 action->addTo( exportMenu_X );
1171 connect( action, SIGNAL( activated() ), SLOT( exportVCalendar() ) ); 1194 connect( action, SIGNAL( activated() ), SLOT( exportVCalendar() ) );
1172 1195
1173 1196
1174 //LR 1197 //LR
1175 QPopupMenu *ex2phone = new QPopupMenu( this ); 1198 QPopupMenu *ex2phone = new QPopupMenu( this );
1176 ex2phone->insertItem(i18n("Complete calendar..."), 1 ); 1199 ex2phone->insertItem(i18n("Complete calendar..."), 1 );
1177 ex2phone->insertItem(i18n("Filtered calendar..."), 2 ); 1200 ex2phone->insertItem(i18n("Filtered calendar..."), 2 );
1178 connect( ex2phone, SIGNAL( activated(int) ), this, SLOT( exportToPhone( int)) ); 1201 connect( ex2phone, SIGNAL( activated(int) ), this, SLOT( exportToPhone( int)) );
1179 exportMenu_X->insertItem( i18n("Export to phone"), ex2phone ); 1202 exportMenu_X->insertItem( i18n("Export to phone"), ex2phone );
1180 1203
1181 importMenu->insertItem( i18n("Export"), exportMenu_X ); 1204 importMenu->insertItem( i18n("Export"), exportMenu_X );
1182 mPrintSelAction = 0; 1205 mPrintSelAction = 0;
1183#ifndef DESKTOP_VERSION 1206#ifndef DESKTOP_VERSION
1184 //importMenu->insertSeparator(); 1207 //importMenu->insertSeparator();
1185 brAction = new QAction( "beam toggle", i18n("Beam receive enabled"), 0, 1208 brAction = new QAction( "beam toggle", i18n("Beam receive enabled"), 0,
1186 this ); 1209 this );
1187 brAction->addTo( beamMenu_X ); 1210 brAction->addTo( beamMenu_X );
1188 brAction->setToggleAction (true ) ; 1211 brAction->setToggleAction (true ) ;
1189 connect( brAction, SIGNAL( activated() ), this, SLOT( toggleBeamReceive() ) ); 1212 connect( brAction, SIGNAL( activated() ), this, SLOT( toggleBeamReceive() ) );
1190 1213
1191 action = new QAction( "beam all", i18n("Beam complete calendar..."), 0, 1214 action = new QAction( "beam all", i18n("Beam complete calendar..."), 0,
1192 this ); 1215 this );
1193 action->addTo( beamMenu_X ); 1216 action->addTo( beamMenu_X );
1194 connect( action, SIGNAL( activated() ), mView, SLOT( beamCalendar() ) ); 1217 connect( action, SIGNAL( activated() ), mView, SLOT( beamCalendar() ) );
1195 1218
1196 action = new QAction( "beam all", i18n("Beam filtered calendar..."), 0, 1219 action = new QAction( "beam all", i18n("Beam filtered calendar..."), 0,
1197 this ); 1220 this );
1198 action->addTo( beamMenu_X ); 1221 action->addTo( beamMenu_X );
1199 connect( action, SIGNAL( activated() ), mView, SLOT( beamFilteredCalendar()) ); 1222 connect( action, SIGNAL( activated() ), mView, SLOT( beamFilteredCalendar()) );
1200 importMenu->insertItem( i18n("Beam"), beamMenu_X ); 1223 importMenu->insertItem( i18n("Beam"), beamMenu_X );
1201#else 1224#else
1202 //importMenu->insertSeparator(); 1225 //importMenu->insertSeparator();
1203 icon = loadPixmap( pathString + "print" ); 1226 icon = loadPixmap( pathString + "print" );
1204 action = new QAction( i18n("Print calendar..."),icon,i18n("Print calendar..."), 0, this ); 1227 action = new QAction( i18n("Print calendar..."),icon,i18n("Print calendar..."), 0, this );
1205 action->addTo( beamMenu_X ); 1228 action->addTo( beamMenu_X );
1206 connect( action, SIGNAL( activated() ), 1229 connect( action, SIGNAL( activated() ),
1207 this, SLOT( printCal() ) ); 1230 this, SLOT( printCal() ) );
1208 1231
1209 icon = loadPixmap( pathString + "week" ); 1232 icon = loadPixmap( pathString + "week" );
1210 action = new QAction( i18n("Print agenda selection..."),icon,i18n("Print agenda selection..."), 0, this ); 1233 action = new QAction( i18n("Print agenda selection..."),icon,i18n("Print agenda selection..."), 0, this );
1211 action->addTo( beamMenu_X ); 1234 action->addTo( beamMenu_X );
1212 connect( action, SIGNAL( activated() ), 1235 connect( action, SIGNAL( activated() ),
1213 this, SLOT( printSel() ) ); 1236 this, SLOT( printSel() ) );
1214 icon = loadPixmap( pathString + "whatsnext" ); 1237 icon = loadPixmap( pathString + "whatsnext" );
1215 action = new QAction( i18n("Print What's Next View..."),icon,i18n("Print What's Next View..."), 0, this ); 1238 action = new QAction( i18n("Print What's Next View..."),icon,i18n("Print What's Next View..."), 0, this );
1216 action->addTo( beamMenu_X ); 1239 action->addTo( beamMenu_X );
1217 connect( action, SIGNAL( activated() ), 1240 connect( action, SIGNAL( activated() ),
1218 mView->viewManager(), SLOT( slotprintWNV() ) ); 1241 mView->viewManager(), SLOT( slotprintWNV() ) );
1219 1242
1220 1243
1221 icon = loadPixmap( pathString + "list" ); 1244 icon = loadPixmap( pathString + "list" );
1222 action = new QAction( i18n("Print List View..."),icon,i18n("Print List View..."), 0, this ); 1245 action = new QAction( i18n("Print List View..."),icon,i18n("Print List View..."), 0, this );
1223 action->addTo( beamMenu_X ); 1246 action->addTo( beamMenu_X );
1224 connect( action, SIGNAL( activated() ), 1247 connect( action, SIGNAL( activated() ),
1225 this, SLOT( printListView() ) ); 1248 this, SLOT( printListView() ) );
1226 1249
1227 icon = loadPixmap( pathString + "newevent" ); 1250 icon = loadPixmap( pathString + "newevent" );
1228 action = new QAction( i18n("Print selected event / todo..."),icon,i18n("Print selected event / todo..."), 0, this ); 1251 action = new QAction( i18n("Print selected event / todo..."),icon,i18n("Print selected event / todo..."), 0, this );
1229 action->addTo( beamMenu_X ); 1252 action->addTo( beamMenu_X );
1230 connect( action, SIGNAL( activated() ), 1253 connect( action, SIGNAL( activated() ),
1231 mView, SLOT( slotprintSelInc() ) ); 1254 mView, SLOT( slotprintSelInc() ) );
1232 mPrintSelAction = action; 1255 mPrintSelAction = action;
1233 importMenu->insertItem( i18n("Print"), beamMenu_X ); 1256 importMenu->insertItem( i18n("Print"), beamMenu_X );
1234#endif 1257#endif
1235 1258
1236 importMenu->insertSeparator(); 1259 importMenu->insertSeparator();
1237 action = new QAction( "beam all", i18n("Save"), 0, 1260 action = new QAction( "beam all", i18n("Save"), 0,
1238 this ); 1261 this );
1239 action->addTo( importMenu ); 1262 action->addTo( importMenu );
1240 connect( action, SIGNAL( activated() ), this, SLOT( save() ) ); 1263 connect( action, SIGNAL( activated() ), this, SLOT( save() ) );
1241 action = new QAction( "beam all", i18n("Exit (+save)"), 0, 1264 action = new QAction( "beam all", i18n("Exit (+save)"), 0,
1242 this ); 1265 this );
1243 action->addTo( importMenu ); 1266 action->addTo( importMenu );
1244 connect( action, SIGNAL( activated() ), this, SLOT( close() ) ); 1267 connect( action, SIGNAL( activated() ), this, SLOT( close() ) );
1245 1268
1246 //menuBar->insertItem( "Configure",configureMenu ); 1269 //menuBar->insertItem( "Configure",configureMenu );
1247 //configureMenu->insertItem( "Toolbar",configureToolBarMenu ); 1270 //configureMenu->insertItem( "Toolbar",configureToolBarMenu );
1248 icon = loadPixmap( "korganizer/korganizer" ); 1271 icon = loadPixmap( "korganizer/korganizer" );
1249 1272
1250 action = new QAction( "Whats New", i18n("What's new?"), 0,this ); 1273 action = new QAction( "Whats New", i18n("What's new?"), 0,this );
1251 action->addTo( helpMenu ); 1274 action->addTo( helpMenu );
1252 connect( action, SIGNAL( activated() ), 1275 connect( action, SIGNAL( activated() ),
1253 SLOT( whatsNew() ) ); 1276 SLOT( whatsNew() ) );
1254 action = new QAction( "featureHowto", i18n("Features + hints..."), 0,this ); 1277 action = new QAction( "featureHowto", i18n("Features + hints..."), 0,this );
1255 action->addTo( helpMenu ); 1278 action->addTo( helpMenu );
1256 connect( action, SIGNAL( activated() ), 1279 connect( action, SIGNAL( activated() ),
1257 SLOT( features() ) ); 1280 SLOT( features() ) );
1258 action = new QAction( "Keys + Colors", i18n("Keys + Colors..."), 0, this ); 1281 action = new QAction( "Keys + Colors", i18n("Keys + Colors..."), 0, this );
1259 action->addTo( helpMenu ); 1282 action->addTo( helpMenu );
1260 connect( action, SIGNAL( activated() ), 1283 connect( action, SIGNAL( activated() ),
1261 SLOT( keyBindings() ) ); 1284 SLOT( keyBindings() ) );
1262 action = new QAction( "Storage Howto", i18n("Storage HowTo..."), 0,this ); 1285 action = new QAction( "Storage Howto", i18n("Storage HowTo..."), 0,this );
1263 action->addTo( helpMenu ); 1286 action->addTo( helpMenu );
@@ -1874,248 +1897,250 @@ void MainWindow::importQtopia()
1874 QString datebook = Global::applicationFileName( "datebook", "datebook.xml"); 1897 QString datebook = Global::applicationFileName( "datebook", "datebook.xml");
1875 QString todolist = Global::applicationFileName( "todolist", "todolist.xml"); 1898 QString todolist = Global::applicationFileName( "todolist", "todolist.xml");
1876 QString categories = QString( getenv( "HOME" ) ) + "/Settings/Categories.xml"; 1899 QString categories = QString( getenv( "HOME" ) ) + "/Settings/Categories.xml";
1877#else 1900#else
1878 QString datebook = QDir::homeDirPath()+ "/Applications/datebook/datebook.xml"; 1901 QString datebook = QDir::homeDirPath()+ "/Applications/datebook/datebook.xml";
1879 QString todolist = QDir::homeDirPath()+ "/Applications/todolist/todolist.xml"; 1902 QString todolist = QDir::homeDirPath()+ "/Applications/todolist/todolist.xml";
1880 QString categories = QDir::homeDirPath()+ "/Settings/Categories.xml"; 1903 QString categories = QDir::homeDirPath()+ "/Settings/Categories.xml";
1881#endif 1904#endif
1882 mView->importQtopia( categories, datebook, todolist ); 1905 mView->importQtopia( categories, datebook, todolist );
1883 } 1906 }
1884 mView->calendar()->reInitAlarmSettings(); 1907 mView->calendar()->reInitAlarmSettings();
1885#if 0 1908#if 0
1886 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 1909 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
1887 i18n("Not supported \non desktop!\n"), 1910 i18n("Not supported \non desktop!\n"),
1888 i18n("Ok"), i18n("Cancel"), 0, 1911 i18n("Ok"), i18n("Cancel"), 0,
1889 0, 1 ); 1912 0, 1 );
1890 1913
1891#endif 1914#endif
1892} 1915}
1893 1916
1894void MainWindow::saveOnClose() 1917void MainWindow::saveOnClose()
1895{ 1918{
1896 KOPrefs *p = KOPrefs::instance(); 1919 KOPrefs *p = KOPrefs::instance();
1897 p->mToolBarHor = ( iconToolBar->orientation () == Qt:: Horizontal ); 1920 p->mToolBarHor = ( iconToolBar->orientation () == Qt:: Horizontal );
1898 p->mToolBarHorV = ( viewToolBar->orientation () == Qt:: Horizontal ); 1921 p->mToolBarHorV = ( viewToolBar->orientation () == Qt:: Horizontal );
1899 p->mToolBarHorN = ( navigatorToolBar->orientation () == Qt:: Horizontal ); 1922 p->mToolBarHorN = ( navigatorToolBar->orientation () == Qt:: Horizontal );
1900 if ( filterToolBar ) { 1923 if ( filterToolBar ) {
1901 p->mToolBarHorF = ( filterToolBar->orientation () == Qt:: Horizontal ); 1924 p->mToolBarHorF = ( filterToolBar->orientation () == Qt:: Horizontal );
1902 } 1925 }
1903#ifdef DESKTOP_VERSION 1926#ifdef DESKTOP_VERSION
1904 1927
1905 QPoint myP; 1928 QPoint myP;
1906 myP = mapFromGlobal( iconToolBar->mapToGlobal( QPoint( 0,0) ) ); 1929 myP = mapFromGlobal( iconToolBar->mapToGlobal( QPoint( 0,0) ) );
1907 if ( p->mToolBarHor ) 1930 if ( p->mToolBarHor )
1908 p->mToolBarUp = myP.y() > height()/2; 1931 p->mToolBarUp = myP.y() > height()/2;
1909 else 1932 else
1910 p->mToolBarUp = myP.x() > width()/2; 1933 p->mToolBarUp = myP.x() > width()/2;
1911 myP = mapFromGlobal( viewToolBar->mapToGlobal( QPoint( 0,0) ) ); 1934 myP = mapFromGlobal( viewToolBar->mapToGlobal( QPoint( 0,0) ) );
1912 if ( p->mToolBarHorV ) 1935 if ( p->mToolBarHorV )
1913 p->mToolBarUpV = myP.y() > height()/2; 1936 p->mToolBarUpV = myP.y() > height()/2;
1914 else 1937 else
1915 p->mToolBarUpV = myP.x() > width()/2 ; 1938 p->mToolBarUpV = myP.x() > width()/2 ;
1916 myP = mapFromGlobal( navigatorToolBar->mapToGlobal( QPoint( 0,0) ) ); 1939 myP = mapFromGlobal( navigatorToolBar->mapToGlobal( QPoint( 0,0) ) );
1917 if ( p->mToolBarHorN ) 1940 if ( p->mToolBarHorN )
1918 p->mToolBarUpN = myP.y() > height()/2; 1941 p->mToolBarUpN = myP.y() > height()/2;
1919 else 1942 else
1920 p->mToolBarUpN = myP.x() > width()/2 ; 1943 p->mToolBarUpN = myP.x() > width()/2 ;
1921 if ( filterToolBar ) { 1944 if ( filterToolBar ) {
1922 myP = mapFromGlobal( filterToolBar->mapToGlobal( QPoint( 0,0) ) ); 1945 myP = mapFromGlobal( filterToolBar->mapToGlobal( QPoint( 0,0) ) );
1923 if ( p->mToolBarHorF ) 1946 if ( p->mToolBarHorF )
1924 p->mToolBarUpF = myP.y() > height()/2; 1947 p->mToolBarUpF = myP.y() > height()/2;
1925 else 1948 else
1926 p->mToolBarUpF = myP.x() > width()/2 ; 1949 p->mToolBarUpF = myP.x() > width()/2 ;
1927 } 1950 }
1928#else 1951#else
1929 if ( p->mToolBarHor ) 1952 if ( p->mToolBarHor )
1930 p->mToolBarUp = iconToolBar->y() > height()/2; 1953 p->mToolBarUp = iconToolBar->y() > height()/2;
1931 else 1954 else
1932 p->mToolBarUp = iconToolBar->x() > width()/2; 1955 p->mToolBarUp = iconToolBar->x() > width()/2;
1933 if ( p->mToolBarHorV ) 1956 if ( p->mToolBarHorV )
1934 p->mToolBarUpV = viewToolBar->y() > height()/2; 1957 p->mToolBarUpV = viewToolBar->y() > height()/2;
1935 else 1958 else
1936 p->mToolBarUpV = viewToolBar->x() > width()/2 ; 1959 p->mToolBarUpV = viewToolBar->x() > width()/2 ;
1937 1960
1938 if ( p->mToolBarHorN ) 1961 if ( p->mToolBarHorN )
1939 p->mToolBarUpN = navigatorToolBar->y() > height()/2; 1962 p->mToolBarUpN = navigatorToolBar->y() > height()/2;
1940 else 1963 else
1941 p->mToolBarUpN = navigatorToolBar->x() > width()/2 ; 1964 p->mToolBarUpN = navigatorToolBar->x() > width()/2 ;
1942 if ( filterToolBar ) { 1965 if ( filterToolBar ) {
1943 if ( p->mToolBarHorF ) 1966 if ( p->mToolBarHorF )
1944 p->mToolBarUpF = filterToolBar->y() > height()/2; 1967 p->mToolBarUpF = filterToolBar->y() > height()/2;
1945 else 1968 else
1946 p->mToolBarUpF = filterToolBar->x() > width()/2 ; 1969 p->mToolBarUpF = filterToolBar->x() > width()/2 ;
1947 } 1970 }
1948#endif 1971#endif
1949 save(); 1972 save();
1950 mView->writeSettings(); 1973 mView->writeSettings();
1951 mView->checkSuspendAlarm(); 1974 mView->checkSuspendAlarm();
1952} 1975}
1953void MainWindow::slotModifiedChanged( bool ) 1976void MainWindow::slotModifiedChanged( bool )
1954{ 1977{
1955 if ( mBlockAtStartup ) 1978 if ( mBlockAtStartup )
1956 return; 1979 return;
1957 1980
1958 int msec; 1981 int msec;
1959 if ( mCalendarModifiedFlag ) { 1982 if ( mCalendarModifiedFlag ) {
1960 //qDebug(" MainWindow timer is running "); 1983 //qDebug(" MainWindow timer is running ");
1961 return; 1984 return;
1962 } 1985 }
1963 // we store the changes after 1 minute, 1986 // we store the changes after 1 minute,
1964 // and for safety reasons after 10 minutes again 1987 // and for safety reasons after 10 minutes again
1965 if ( !mSyncManager->blockSave() ) 1988 if ( !mSyncManager->blockSave() )
1966 msec = (1000 * 60*KOPrefs::instance()->mAutoSaveInterval) +1000; 1989 msec = (1000 * 60*KOPrefs::instance()->mAutoSaveInterval) +1000;
1967 else 1990 else
1968 msec = 1000 * 600; 1991 msec = 1000 * 600;
1969 mSaveTimer.start( msec, true ); // 1 minute 1992 mSaveTimer.start( msec, true ); // 1 minute
1970 mSaveTime.restart(); 1993 mSaveTimerStart = QDateTime::currentDateTime();
1971 mSaveDelay = msec/1000; 1994 mSaveDelay = msec/1000;
1972 qDebug("KO: Saving File in %d secs!", msec/1000); 1995 qDebug("KO: Saving File in %d secs!", msec/1000);
1973 mCalendarModifiedFlag = true; 1996 mCalendarModifiedFlag = true;
1974} 1997}
1975void MainWindow::saveStopTimer() 1998void MainWindow::saveStopTimer()
1976{ 1999{
1977 mSaveTimer.stop(); 2000 mSaveTimer.stop();
1978} 2001}
1979void MainWindow::backupAllFiles() 2002void MainWindow::backupAllFiles()
1980{ 2003{
1981 QDate reference ( 2000,1,1); 2004 QDate reference ( 2000,1,1);
1982 int daysTo = reference.daysTo ( QDate::currentDate() ); 2005 int daysTo = reference.daysTo ( QDate::currentDate() );
1983 setCaption(i18n("Creating backup ... please wait ..." )); 2006 setCaption(i18n("Creating backup ... please wait ..." ));
1984 qDebug("KO: Last backup was %d days ago ", daysTo - KOPrefs::instance()->mLastBackupDate); 2007 qDebug("KO: Last backup was %d days ago ", daysTo - KOPrefs::instance()->mLastBackupDate);
1985 // we need the file path, the backup dir and the number of bups as param 2008 // we need the file path, the backup dir and the number of bups as param
1986 QString bupDir = KPimGlobalPrefs::instance()->mBackupDatadir; 2009 QString bupDir = KPimGlobalPrefs::instance()->mBackupDatadir;
1987 if ( KPimGlobalPrefs::instance()->mBackupUseDefaultDir) 2010 if ( KPimGlobalPrefs::instance()->mBackupUseDefaultDir)
1988 bupDir = KGlobalSettings::backupDataDir(); 2011 bupDir = KGlobalSettings::backupDataDir();
1989 int retval = KApplication::createBackup( defaultFileName(), bupDir, KPimGlobalPrefs::instance()->mBackupNumbers ); 2012 int retval = KApplication::createBackup( defaultFileName(), bupDir, KPimGlobalPrefs::instance()->mBackupNumbers );
1990 if ( retval == 0 ) { 2013 if ( retval == 0 ) {
1991 setCaption(i18n("Backup cancelled" )); 2014 setCaption(i18n("Backup cancelled" ));
1992 qDebug("KO: Backup cancelled. Will try again tomorrow "); 2015 qDebug("KO: Backup cancelled. Will try again tomorrow ");
1993 // retval == 0 : backup skipped for today, try again tomorrow 2016 // retval == 0 : backup skipped for today, try again tomorrow
1994 KOPrefs::instance()->mLastBackupDate = daysTo- KPimGlobalPrefs::instance()->mBackupDayCount+1; 2017 KOPrefs::instance()->mLastBackupDate = daysTo- KPimGlobalPrefs::instance()->mBackupDayCount+1;
1995 } else if ( retval == 1 ){ 2018 } else if ( retval == 1 ){
1996 qDebug("KO: Backup created."); 2019 qDebug("KO: Backup created.");
1997 // backup ok 2020 // backup ok
1998 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2021 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
1999 KopiCalendarFile * cal = calendars.first(); 2022 KopiCalendarFile * cal = calendars.first();
2000 cal = calendars.next(); 2023 cal = calendars.next();
2001 while ( cal ) { 2024 while ( cal ) {
2002 if ( !cal->mErrorOnLoad ) { 2025 if ( !cal->mErrorOnLoad ) {
2003 KApplication::createBackup( cal->mFileName, bupDir, KPimGlobalPrefs::instance()->mBackupNumbers ); 2026 KApplication::createBackup( cal->mFileName, bupDir, KPimGlobalPrefs::instance()->mBackupNumbers );
2004 } 2027 }
2005 cal = calendars.next(); 2028 cal = calendars.next();
2006 } 2029 }
2007 KOPrefs::instance()->mLastBackupDate = daysTo; 2030 KOPrefs::instance()->mLastBackupDate = daysTo;
2008 setCaption(i18n("Backup succesfully finished" )); 2031 setCaption(i18n("Backup succesfully finished" ));
2009 } else if ( retval == 2 ){ 2032 } else if ( retval == 2 ){
2010 setCaption(i18n("Backup globally disabled" )); 2033 setCaption(i18n("Backup globally disabled" ));
2011 qDebug("KO: Backup globally cancelled."); 2034 qDebug("KO: Backup globally cancelled.");
2012 // backup globally cancelled 2035 // backup globally cancelled
2013 KPimGlobalPrefs::instance()->mBackupEnabled = false; 2036 KPimGlobalPrefs::instance()->mBackupEnabled = false;
2014 } 2037 }
2015 // retval == 3: do nothing, try again later 2038 // retval == 3: do nothing, try again later
2016} 2039}
2017void MainWindow::save() 2040void MainWindow::save()
2018{ 2041{
2019 if ( mSaveDelay ) { 2042 if ( mSaveDelay ) {
2020 if ( mSaveDelay + 60 < mSaveTime.elapsed()/1000 ) { 2043 int elapsed = mSaveTimerStart.secsTo( QDateTime::currentDateTime() );
2021 qDebug("KO: Save delay %d. Elapsed save time %d ", mSaveDelay, mSaveTime.elapsed()/1000 ); 2044 if ( mSaveDelay < elapsed ) {
2022 qDebug("KO: Restarting save timer"); 2045 qDebug("KO: Pending save after wakeup from suspend detected.");
2023 int msec = 10000; 2046 qDebug("KO: Save delay %d sec. Elapsed save time %d sec.", mSaveDelay, elapsed );
2024 mSaveTimer.start( msec, true ); // 1 minute 2047 qDebug("KO: Restarting save timer to save in 15 sec.");
2025 mSaveTime.restart(); 2048 int msec = 15000;
2049 mSaveTimer.start( msec, true );
2050 mSaveTimerStart = QDateTime::currentDateTime();
2026 mSaveDelay = msec/1000; 2051 mSaveDelay = msec/1000;
2027 return; 2052 return;
2028 } 2053 }
2029 } 2054 }
2030 2055
2031 if ( mView->viewManager()->journalView() ) 2056 if ( mView->viewManager()->journalView() )
2032 mView->viewManager()->journalView()->checkModified(); 2057 mView->viewManager()->journalView()->checkModified();
2033 if ( !mCalendarModifiedFlag ) { 2058 if ( !mCalendarModifiedFlag ) {
2034 qDebug("KO: Calendar not modified. Nothing saved."); 2059 qDebug("KO: Calendar not modified. Nothing saved.");
2035 return; 2060 return;
2036 } 2061 }
2037 if ( mSyncManager->blockSave() ) { 2062 if ( mSyncManager->blockSave() ) {
2038 slotModifiedChanged( true ); 2063 slotModifiedChanged( true );
2039 return; 2064 return;
2040 } 2065 }
2041 mSaveDelay = 0; 2066 mSaveDelay = 0;
2042 mSyncManager->setBlockSave(true); 2067 mSyncManager->setBlockSave(true);
2043 if ( mView->checkAllFileVersions() ) { 2068 if ( mView->checkAllFileVersions() ) {
2044 if ( KPimGlobalPrefs::instance()->mBackupEnabled ){ 2069 if ( KPimGlobalPrefs::instance()->mBackupEnabled ){
2045 QDate reference ( 2000,1,1); 2070 QDate reference ( 2000,1,1);
2046 int daysTo = reference.daysTo ( QDate::currentDate() ); 2071 int daysTo = reference.daysTo ( QDate::currentDate() );
2047 if ( daysTo - KPimGlobalPrefs::instance()->mBackupDayCount >= KOPrefs::instance()->mLastBackupDate ) { 2072 if ( daysTo - KPimGlobalPrefs::instance()->mBackupDayCount >= KOPrefs::instance()->mLastBackupDate ) {
2048 backupAllFiles(); 2073 backupAllFiles();
2049 } 2074 }
2050 ; // KPimGlobalPrefs::instance()->mLastBackupDate 2075 ; // KPimGlobalPrefs::instance()->mLastBackupDate
2051 } 2076 }
2052 QTime neededSaveTime; 2077 QTime neededSaveTime;
2053 neededSaveTime.start(); 2078 neededSaveTime.start();
2054 if ( !isMinimized () ) 2079 if ( !isMinimized () )
2055 setCaption(i18n("KO/Pi:Saving Data to File ..." )); 2080 setCaption(i18n("KO/Pi:Saving Data to File ..." ));
2056 qDebug("KO: Start saving data to file!"); 2081 qDebug("KO: Start saving data to file!");
2057 if ( mView->saveCalendars() ) 2082 if ( mView->saveCalendars() )
2058 mCalendarModifiedFlag = false; 2083 mCalendarModifiedFlag = false;
2059 int msNeeded = neededSaveTime.elapsed(); 2084 int msNeeded = neededSaveTime.elapsed();
2060 qDebug("KO: Needed %d ms for saving.",msNeeded ); 2085 qDebug("KO: Needed %d ms for saving.",msNeeded );
2061 QString savemes; 2086 QString savemes;
2062 savemes.sprintf(i18n("KO/Pi:File Saved. Needed %d sec, %d ms"),(msNeeded/1000)%100,msNeeded%1000 ); 2087 savemes.sprintf(i18n("KO/Pi:File Saved. Needed %d sec, %d ms"),(msNeeded/1000)%100,msNeeded%1000 );
2063 if ( !isMinimized () ) 2088 if ( !isMinimized () )
2064 setCaption(savemes); 2089 setCaption(savemes);
2065 else 2090 else
2066 qDebug(savemes); 2091 qDebug(savemes);
2067 } else { 2092 } else {
2068 setCaption(i18n("Saving cancelled!")); 2093 setCaption(i18n("Saving cancelled!"));
2069 mCalendarModifiedFlag = false; 2094 mCalendarModifiedFlag = false;
2070 slotModifiedChanged( true ); 2095 slotModifiedChanged( true );
2071 } 2096 }
2072 mSyncManager->setBlockSave( false ); 2097 mSyncManager->setBlockSave( false );
2073} 2098}
2074 2099
2075void MainWindow::keyReleaseEvent ( QKeyEvent * e) 2100void MainWindow::keyReleaseEvent ( QKeyEvent * e)
2076{ 2101{
2077 if ( !e->isAutoRepeat() ) { 2102 if ( !e->isAutoRepeat() ) {
2078 mFlagKeyPressed = false; 2103 mFlagKeyPressed = false;
2079 } 2104 }
2080} 2105}
2081void MainWindow::keyPressEvent ( QKeyEvent * e ) 2106void MainWindow::keyPressEvent ( QKeyEvent * e )
2082{ 2107{
2083 qApp->processEvents(); 2108 qApp->processEvents();
2084 if ( e->isAutoRepeat() && !mFlagKeyPressed ) { 2109 if ( e->isAutoRepeat() && !mFlagKeyPressed ) {
2085 e->ignore(); 2110 e->ignore();
2086 // qDebug(" ignore %d",e->isAutoRepeat() ); 2111 // qDebug(" ignore %d",e->isAutoRepeat() );
2087 return; 2112 return;
2088 } 2113 }
2089 if (! e->isAutoRepeat() ) 2114 if (! e->isAutoRepeat() )
2090 mFlagKeyPressed = true; 2115 mFlagKeyPressed = true;
2091 KOPrefs *p = KOPrefs::instance(); 2116 KOPrefs *p = KOPrefs::instance();
2092 bool showSelectedDates = false; 2117 bool showSelectedDates = false;
2093 int size; 2118 int size;
2094 int pro = 0; 2119 int pro = 0;
2095 //qDebug("MainWindow::keyPressEvent "); 2120 //qDebug("MainWindow::keyPressEvent ");
2096 switch ( e->key() ) { 2121 switch ( e->key() ) {
2097 case Qt::Key_Right: 2122 case Qt::Key_Right:
2098 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton) 2123 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton)
2099 mView->goNextMonth(); 2124 mView->goNextMonth();
2100 else 2125 else
2101 mView->goNext(); 2126 mView->goNext();
2102 showSelectedDates = true; 2127 showSelectedDates = true;
2103 break; 2128 break;
2104 case Qt::Key_Left: 2129 case Qt::Key_Left:
2105 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 2130 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
2106 mView->goPreviousMonth(); 2131 mView->goPreviousMonth();
2107 else 2132 else
2108 mView->goPrevious(); 2133 mView->goPrevious();
2109 showSelectedDates = true; 2134 showSelectedDates = true;
2110 break; 2135 break;
2111 case Qt::Key_Down: 2136 case Qt::Key_Down:
2112 mView->viewManager()->agendaView()->scrollOneHourDown(); 2137 mView->viewManager()->agendaView()->scrollOneHourDown();
2113 break; 2138 break;
2114 case Qt::Key_Up: 2139 case Qt::Key_Up:
2115 mView->viewManager()->agendaView()->scrollOneHourUp(); 2140 mView->viewManager()->agendaView()->scrollOneHourUp();
2116 break; 2141 break;
2117 case Qt::Key_K: 2142 case Qt::Key_K:
2118 mView->viewManager()->showMonthViewWeek(); 2143 mView->viewManager()->showMonthViewWeek();
2119 break; 2144 break;
2120 case Qt::Key_I: 2145 case Qt::Key_I:
2121 mView->showIncidence(); 2146 mView->showIncidence();
@@ -2482,224 +2507,240 @@ void MainWindow::saveCalendar()
2482 bupDir = KGlobalSettings::backupDataDir(); 2507 bupDir = KGlobalSettings::backupDataDir();
2483 bupDir = KGlobal::formatMessage ( bupDir, 0 ); 2508 bupDir = KGlobal::formatMessage ( bupDir, 0 );
2484 QString bupHint; 2509 QString bupHint;
2485 if ( !KPimGlobalPrefs::instance()->mBackupEnabled ) 2510 if ( !KPimGlobalPrefs::instance()->mBackupEnabled )
2486 bupHint = i18n("(Hint: You can enable automatic backup in the global settings!)"); 2511 bupHint = i18n("(Hint: You can enable automatic backup in the global settings!)");
2487 if ( KMessageBox::warningContinueCancel( this, i18n("This will <b>backup all calendar files</b> to the directory %1 %2").arg(bupDir).arg(bupHint),i18n("Information") ) != KMessageBox::Continue ) return; 2512 if ( KMessageBox::warningContinueCancel( this, i18n("This will <b>backup all calendar files</b> to the directory %1 %2").arg(bupDir).arg(bupHint),i18n("Information") ) != KMessageBox::Continue ) return;
2488 bool enabled = KPimGlobalPrefs::instance()->mBackupEnabled; 2513 bool enabled = KPimGlobalPrefs::instance()->mBackupEnabled;
2489 KPimGlobalPrefs::instance()->mBackupEnabled = false; 2514 KPimGlobalPrefs::instance()->mBackupEnabled = false;
2490 save(); 2515 save();
2491 KPimGlobalPrefs::instance()->mBackupEnabled = enabled; 2516 KPimGlobalPrefs::instance()->mBackupEnabled = enabled;
2492 backupAllFiles(); 2517 backupAllFiles();
2493} 2518}
2494void MainWindow::loadCalendar() 2519void MainWindow::loadCalendar()
2495{ 2520{
2496 2521
2497 2522
2498#if 0 2523#if 0
2499 QString fn = KOPrefs::instance()->mLastLoadFile; 2524 QString fn = KOPrefs::instance()->mLastLoadFile;
2500 fn = KFileDialog::getOpenFileName( fn, i18n("Load backup filename"), this ); 2525 fn = KFileDialog::getOpenFileName( fn, i18n("Load backup filename"), this );
2501 2526
2502 if ( fn == "" ) 2527 if ( fn == "" )
2503 return; 2528 return;
2504 QFileInfo info; 2529 QFileInfo info;
2505 info.setFile( fn ); 2530 info.setFile( fn );
2506 QString mess; 2531 QString mess;
2507 bool loadbup = true; 2532 bool loadbup = true;
2508 if ( info. exists() ) { 2533 if ( info. exists() ) {
2509 mess = i18n("Backup file from:\n%1\nLoading backup\nfile will delete\nyour current Data!\n").arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )); 2534 mess = i18n("Backup file from:\n%1\nLoading backup\nfile will delete\nyour current Data!\n").arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false ));
2510 int result = QMessageBox::warning( this, "KO/Pi: Warning!", 2535 int result = QMessageBox::warning( this, "KO/Pi: Warning!",
2511 mess, 2536 mess,
2512 i18n("Load!"), i18n("Cancel"), 0, 2537 i18n("Load!"), i18n("Cancel"), 0,
2513 0, 1 ); 2538 0, 1 );
2514 if ( result != 0 ) { 2539 if ( result != 0 ) {
2515 loadbup = false; 2540 loadbup = false;
2516 } 2541 }
2517 } else { 2542 } else {
2518 QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 2543 QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
2519 i18n("Backup file\ndoes not exist!\nNothing loaded!"), 0, 0, 2544 i18n("Backup file\ndoes not exist!\nNothing loaded!"), 0, 0,
2520 0, 1 ); 2545 0, 1 );
2521 2546
2522 return; 2547 return;
2523 } 2548 }
2524 if ( loadbup ) { 2549 if ( loadbup ) {
2525 mView->openCalendar( fn ); 2550 mView->openCalendar( fn );
2526 KOPrefs::instance()->mLastLoadFile = fn; 2551 KOPrefs::instance()->mLastLoadFile = fn;
2527 mess = i18n("KO/Pi:Loaded %1").arg(fn) ; 2552 mess = i18n("KO/Pi:Loaded %1").arg(fn) ;
2528 setCaption(mess); 2553 setCaption(mess);
2529 } 2554 }
2530#endif 2555#endif
2531 2556
2532} 2557}
2533void MainWindow::quickImportIcal() 2558void MainWindow::quickImportIcal()
2534{ 2559{
2535 importFile( KOPrefs::instance()->mLastImportFile, false ); 2560 importFile( KOPrefs::instance()->mLastImportFile, false );
2536} 2561}
2537void MainWindow::importFile( QString fn, bool quick ) 2562void MainWindow::importFile( QString fn, bool quick )
2538{ 2563{
2539 QFileInfo info; 2564 QFileInfo info;
2540 info.setFile( fn ); 2565 info.setFile( fn );
2541 QString mess; 2566 QString mess;
2542 if ( !info. exists() ) { 2567 if ( !info. exists() ) {
2543 mess = i18n("Import file \n...%1\ndoes not exist!\nNothing imported!\n").arg(fn.right( 30)); 2568 mess = i18n("Import file \n...%1\ndoes not exist!\nNothing imported!\n").arg(fn.right( 30));
2544 QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 2569 QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
2545 mess ); 2570 mess );
2546 return; 2571 return;
2547 } 2572 }
2548 int result = 0; 2573 int result = 0;
2549 if ( !quick ) { 2574 if ( !quick ) {
2550 mess = i18n( "Import file \n...%1\nfrom:\n%2\nDuplicated entries\nwill not be imported!\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )); 2575 mess = i18n( "Import file \n...%1\nfrom:\n%2\nDuplicated entries\nwill not be imported!\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false ));
2551 result = QMessageBox::warning( this, "KO/Pi: Warning!", 2576 result = QMessageBox::warning( this, "KO/Pi: Warning!",
2552 mess, 2577 mess,
2553 "Import", "Cancel", 0, 2578 "Import", "Cancel", 0,
2554 0, 1 ); 2579 0, 1 );
2555 } 2580 }
2556 if ( result == 0 ) { 2581 if ( result == 0 ) {
2557 if ( mView->openCalendar( fn, true )) { 2582 if ( mView->openCalendar( fn, true )) {
2558 KOPrefs::instance()->mLastImportFile = fn; 2583 KOPrefs::instance()->mLastImportFile = fn;
2559 setCaption(i18n("Imported file successfully")); 2584 setCaption(i18n("Imported file successfully"));
2560 } else { 2585 } else {
2561 setCaption(i18n("Error importing file")); 2586 setCaption(i18n("Error importing file"));
2562 } 2587 }
2563 mView->updateView(); 2588 mView->updateView();
2564 } 2589 }
2565} 2590}
2566 2591
2567void MainWindow::importIcal() 2592void MainWindow::importIcal()
2568{ 2593{
2569 2594
2570 QString fn =KOPrefs::instance()->mLastImportFile; 2595 QString fn =KOPrefs::instance()->mLastImportFile;
2571 2596
2572 fn =KFileDialog:: getOpenFileName( fn, i18n("Import filename(*.ics/*.vcs)"), this ); 2597 fn =KFileDialog:: getOpenFileName( fn, i18n("Import filename(*.ics/*.vcs)"), this );
2573 if ( fn == "" ) 2598 if ( fn == "" )
2574 return; 2599 return;
2575 importFile( fn, true ); 2600 importFile( fn, true );
2576 2601
2577} 2602}
2578 2603void MainWindow::exportCalendar( bool iCalFormat )
2579void MainWindow::exportVCalendar()
2580{ 2604{
2581 QString fn = KOPrefs::instance()->mLastVcalFile; 2605 QString fn = KOPrefs::instance()->mLastVcalFile;
2582 fn = KFileDialog::getSaveFileName( fn, i18n("Export vcal filename(*.vcs)"), this ); 2606 if ( iCalFormat ) {
2607 fn = QDir::homeDirPath()+"/kopiexport.ics";
2608 fn = KFileDialog::getSaveFileName( fn, i18n("Export iCal filename(*.ics)"), this );
2609 }
2610 else
2611 fn = KFileDialog::getSaveFileName( fn, i18n("Export vcal filename(*.vcs)"), this );
2583 if ( fn == "" ) 2612 if ( fn == "" )
2584 return; 2613 return;
2585 QFileInfo info; 2614 QFileInfo info;
2586 info.setFile( fn ); 2615 info.setFile( fn );
2587 QString mes; 2616 QString mes;
2588 bool createbup = true; 2617 bool createbup = true;
2589 if ( info. exists() ) { 2618 if ( info. exists() ) {
2590 mes = i18n("Save file\nalready exists!\nOld save file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) ); 2619 mes = i18n("Save file\nalready exists!\nOld save file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) );
2591 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, 2620 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes,
2592 i18n("Overwrite!"), i18n("Cancel"), 0, 2621 i18n("Overwrite!"), i18n("Cancel"), 0,
2593 0, 1 ); 2622 0, 1 );
2594 if ( result != 0 ) { 2623 if ( result != 0 ) {
2595 createbup = false; 2624 createbup = false;
2596 } 2625 }
2597 } 2626 }
2598 if ( createbup ) { 2627 if ( createbup ) {
2599 if ( mView->exportVCalendar( fn ) ) { 2628 bool success = false;
2600 KOPrefs::instance()->mLastVcalFile = fn; 2629 if ( iCalFormat )
2630 success = mView->exportICalendar( fn );
2631 else
2632 success = mView->exportVCalendar( fn );
2633 if ( success ) {
2601 if ( fn.length() > 20 ) 2634 if ( fn.length() > 20 )
2602 mes = i18n("KO/Pi:Exported to ...%1").arg(fn.right(20)) ; 2635 mes = i18n("KO/Pi:Exported to ...%1").arg(fn.right(20)) ;
2603 else 2636 else
2604 mes = i18n("KO/Pi:Exported to %1").arg(fn ); 2637 mes = i18n("KO/Pi:Exported to %1").arg(fn );
2605 setCaption(mes); 2638 setCaption(mes);
2606 } 2639 }
2607 } 2640 }
2608 2641
2609} 2642}
2643void MainWindow::exportICalendar()
2644{
2645 exportCalendar( true );
2646}
2647void MainWindow::exportVCalendar()
2648{
2649 exportCalendar( false );
2650}
2610QString MainWindow::sentSyncFile() 2651QString MainWindow::sentSyncFile()
2611{ 2652{
2612#ifdef DESKTOP_VERSION 2653#ifdef DESKTOP_VERSION
2613 return QDir::convertSeparators( locateLocal( "tmp", "copysynccal.ics" ) ); 2654 return QDir::convertSeparators( locateLocal( "tmp", "copysynccal.ics" ) );
2614#else 2655#else
2615 return QString( "/tmp/copysynccal.ics" ); 2656 return QString( "/tmp/copysynccal.ics" );
2616#endif 2657#endif
2617} 2658}
2618 2659
2619void MainWindow::syncFileRequest() 2660void MainWindow::syncFileRequest()
2620{ 2661{
2621 while ( mSyncManager->blockSave() ) { 2662 while ( mSyncManager->blockSave() ) {
2622 qApp->processEvents(); 2663 qApp->processEvents();
2623 } 2664 }
2624 mSyncManager->setBlockSave(true); 2665 mSyncManager->setBlockSave(true);
2625 2666
2626 if ( KOPrefs::instance()->mPassiveSyncWithDesktop ) { 2667 if ( KOPrefs::instance()->mPassiveSyncWithDesktop ) {
2627 mSyncManager->slotSyncMenu( 999 ); 2668 mSyncManager->slotSyncMenu( 999 );
2628 } 2669 }
2629 2670
2630 setCaption(i18n("Saving Data to temp file ..." )); 2671 setCaption(i18n("Saving Data to temp file ..." ));
2631 mView->saveCalendar( sentSyncFile() ); 2672 mView->saveCalendar( sentSyncFile() );
2632 setCaption(i18n("Data saved to temp file!" )); 2673 setCaption(i18n("Data saved to temp file!" ));
2633 mSyncManager->setBlockSave( false ); 2674 mSyncManager->setBlockSave( false );
2634 2675
2635} 2676}
2636void MainWindow::getFile( bool success ) 2677void MainWindow::getFile( bool success )
2637{ 2678{
2638 if ( ! success ) { 2679 if ( ! success ) {
2639 setCaption( i18n("Error receiving file. Nothing changed!") ); 2680 setCaption( i18n("Error receiving file. Nothing changed!") );
2640 return; 2681 return;
2641 } 2682 }
2642 mView->mergeFile( sentSyncFile() ); 2683 mView->mergeFile( sentSyncFile() );
2643 if ( KOPrefs::instance()->mPassiveSyncWithDesktop ) { 2684 if ( KOPrefs::instance()->mPassiveSyncWithDesktop ) {
2644 mSyncManager->slotSyncMenu( 999 ); 2685 mSyncManager->slotSyncMenu( 999 );
2645 } 2686 }
2646 setCaption( i18n("Pi-Sync successful!") ); 2687 setCaption( i18n("Pi-Sync successful!") );
2647} 2688}
2648void MainWindow::printListView() 2689void MainWindow::printListView()
2649{ 2690{
2650 2691
2651 QString message = i18n("You can make a printout of the <b>List View</b> and the list view in the <b>Search Dialog</b>! To do this, please go to the <b>List View/Search Dialog</b>. Right click on the list. Select in the popup menu the entry <b>Print complete list</b>. That prints the list as you see it. You can remove items from the list before printing without deleting the corresponding event/todo! Simply select all items you do not want to print out. Then right click on one of the items and choose <b>Hide selected items</b>. After that you can print the list without these items."); 2692 QString message = i18n("You can make a printout of the <b>List View</b> and the list view in the <b>Search Dialog</b>! To do this, please go to the <b>List View/Search Dialog</b>. Right click on the list. Select in the popup menu the entry <b>Print complete list</b>. That prints the list as you see it. You can remove items from the list before printing without deleting the corresponding event/todo! Simply select all items you do not want to print out. Then right click on one of the items and choose <b>Hide selected items</b>. After that you can print the list without these items.");
2652 2693
2653 KMessageBox::information( this, message); 2694 KMessageBox::information( this, message);
2654} 2695}
2655void MainWindow::printSel( ) 2696void MainWindow::printSel( )
2656{ 2697{
2657 mView->viewManager()->agendaView()->agenda()->printSelection(); 2698 mView->viewManager()->agendaView()->agenda()->printSelection();
2658} 2699}
2659 2700
2660void MainWindow::printCal() 2701void MainWindow::printCal()
2661{ 2702{
2662 mView->print();//mCp->showDialog(); 2703 mView->print();//mCp->showDialog();
2663} 2704}
2664 2705
2665 2706
2666#include "libkdepim/kdatepicker.h" 2707#include "libkdepim/kdatepicker.h"
2667#include <kdatetbl.h> 2708#include <kdatetbl.h>
2668 2709
2669void MainWindow::weekAction() 2710void MainWindow::weekAction()
2670{ 2711{
2671 int month; 2712 int month;
2672 KPopupFrame* popup = new KPopupFrame(this); 2713 KPopupFrame* popup = new KPopupFrame(this);
2673 KDateInternalWeekPicker* picker = new KDateInternalWeekPicker(popup); 2714 KDateInternalWeekPicker* picker = new KDateInternalWeekPicker(popup);
2674 // ----- 2715 // -----
2675 picker->resize(picker->sizeHint()); 2716 picker->resize(picker->sizeHint());
2676 popup->setMainWidget(picker); 2717 popup->setMainWidget(picker);
2677 picker->setFocus(); 2718 picker->setFocus();
2678 connect(picker, SIGNAL(closeMe(int)), popup, SLOT(close(int))); 2719 connect(picker, SIGNAL(closeMe(int)), popup, SLOT(close(int)));
2679 int x = 0; 2720 int x = 0;
2680 int y = iconToolBar->height(); 2721 int y = iconToolBar->height();
2681 int dX = 0; 2722 int dX = 0;
2682 int dY = 0; 2723 int dY = 0;
2683 if ( iconToolBar->orientation () == Qt:: Horizontal ) { 2724 if ( iconToolBar->orientation () == Qt:: Horizontal ) {
2684 if ( iconToolBar->y() > height()/2 ) { 2725 if ( iconToolBar->y() > height()/2 ) {
2685 dY = picker->sizeHint().height()+8; 2726 dY = picker->sizeHint().height()+8;
2686 y = 0; 2727 y = 0;
2687 } 2728 }
2688 } else { 2729 } else {
2689 if ( iconToolBar->x() > width()/2 ) { // right side 2730 if ( iconToolBar->x() > width()/2 ) { // right side
2690 x=0; 2731 x=0;
2691 dX= picker->sizeHint().width()+8; 2732 dX= picker->sizeHint().width()+8;
2692 y = 0; 2733 y = 0;
2693 } else { 2734 } else {
2694 x= iconToolBar->width(); 2735 x= iconToolBar->width();
2695 y = 0; 2736 y = 0;
2696 } 2737 }
2697 } 2738 }
2698 //qDebug("dax %d dy %d %d %d ", dX, dY, iconToolBar->x(), iconToolBar->y() ); 2739 //qDebug("dax %d dy %d %d %d ", dX, dY, iconToolBar->x(), iconToolBar->y() );
2699 if(popup->exec(iconToolBar->mapToGlobal(QPoint(x,y)-QPoint( dX,dY)))) 2740 if(popup->exec(iconToolBar->mapToGlobal(QPoint(x,y)-QPoint( dX,dY))))
2700 { 2741 {
2701 month = picker->getResult(); 2742 month = picker->getResult();
2702 emit selectWeek ( month ); 2743 emit selectWeek ( month );
2703 //qDebug("weekSelected %d ", month); 2744 //qDebug("weekSelected %d ", month);
2704 } 2745 }
2705 delete popup; 2746 delete popup;
diff --git a/korganizer/mainwindow.h b/korganizer/mainwindow.h
index 657c0a8..71c069b 100644
--- a/korganizer/mainwindow.h
+++ b/korganizer/mainwindow.h
@@ -1,186 +1,189 @@
1#ifndef KORGE_MAINWINDOW_H 1#ifndef KORGE_MAINWINDOW_H
2#define KORGE_MAINWINDOW_H 2#define KORGE_MAINWINDOW_H
3 3
4#include <qmainwindow.h> 4#include <qmainwindow.h>
5#include <qtimer.h> 5#include <qtimer.h>
6#include <qdict.h> 6#include <qdict.h>
7#include <qfile.h> 7#include <qfile.h>
8#include <qmenubar.h> 8#include <qmenubar.h>
9#include <qtextstream.h> 9#include <qtextstream.h>
10#include <qregexp.h> 10#include <qregexp.h>
11 11
12#include <libkcal/incidence.h> 12#include <libkcal/incidence.h>
13#include <ksyncmanager.h> 13#include <ksyncmanager.h>
14#include <kpopupmenu.h> 14#include <kpopupmenu.h>
15#ifndef DESKTOP_VERSION 15#ifndef DESKTOP_VERSION
16#include <qcopchannel_qws.h> 16#include <qcopchannel_qws.h>
17#endif 17#endif
18class QAction; 18class QAction;
19class CalendarView; 19class CalendarView;
20class KSyncProfile; 20class KSyncProfile;
21#ifdef DESKTOP_VERSION 21#ifdef DESKTOP_VERSION
22 22
23#define QPEToolBar QToolBar 23#define QPEToolBar QToolBar
24#endif 24#endif
25class QPEToolBar; 25class QPEToolBar;
26 26
27 27
28namespace KCal { 28namespace KCal {
29class CalendarLocal; 29class CalendarLocal;
30} 30}
31 31
32using namespace KCal; 32using namespace KCal;
33 33
34class MainWindow : public QMainWindow 34class MainWindow : public QMainWindow
35{ 35{
36 Q_OBJECT 36 Q_OBJECT
37 public: 37 public:
38 MainWindow( QWidget *parent = 0, const char *name = 0 ); 38 MainWindow( QWidget *parent = 0, const char *name = 0 );
39 ~MainWindow(); 39 ~MainWindow();
40 bool beamReceiveEnabled(); 40 bool beamReceiveEnabled();
41 static QString defaultFileName(); 41 static QString defaultFileName();
42 static QString syncFileName(); 42 static QString syncFileName();
43 static QString resourcePath(); 43 static QString resourcePath();
44 public slots: 44 public slots:
45 void setUsesBigPixmaps ( bool ); 45 void setUsesBigPixmaps ( bool );
46 void setCaption ( const QString & ); 46 void setCaption ( const QString & );
47 void updateWeekNum(const KCal::DateList &); 47 void updateWeekNum(const KCal::DateList &);
48 void updateWeek(QDate); 48 void updateWeek(QDate);
49 void updateFilterToolbar(); 49 void updateFilterToolbar();
50 virtual void showMaximized (); 50 virtual void showMaximized ();
51 void configureAgenda( int ); 51 void configureAgenda( int );
52 void recieve( const QCString& msg, const QByteArray& data ); 52 void recieve( const QCString& msg, const QByteArray& data );
53 void receiveStart( const QCString& msg, const QByteArray& data ); 53 void receiveStart( const QCString& msg, const QByteArray& data );
54 protected slots: 54 protected slots:
55 void loadDataAfterStart(); 55 void loadDataAfterStart();
56 void calHint(); 56 void calHint();
57 void startMultiSync(); 57 void startMultiSync();
58 void setCaptionToDates(); 58 void setCaptionToDates();
59 void weekAction(); 59 void weekAction();
60 void about(); 60 void about();
61 void licence(); 61 void licence();
62 void faq(); 62 void faq();
63 void usertrans(); 63 void usertrans();
64 void features(); 64 void features();
65 void synchowto(); 65 void synchowto();
66 void storagehowto(); 66 void storagehowto();
67 void timetrackinghowto(); 67 void timetrackinghowto();
68 void kdesynchowto(); 68 void kdesynchowto();
69 void multisynchowto(); 69 void multisynchowto();
70 void whatsNew(); 70 void whatsNew();
71 void keyBindings(); 71 void keyBindings();
72 void aboutAutoSaving();; 72 void aboutAutoSaving();;
73 void aboutKnownBugs(); 73 void aboutKnownBugs();
74 74
75 void processIncidenceSelection( Incidence * ); 75 void processIncidenceSelection( Incidence * );
76 76
77 void importQtopia(); 77 void importQtopia();
78 void importBday(); 78 void importBday();
79 void importOL(); 79 void importOL();
80 void importIcal(); 80 void importIcal();
81 void importFile( QString, bool ); 81 void importFile( QString, bool );
82 void quickImportIcal(); 82 void quickImportIcal();
83 83
84 void slotModifiedChanged( bool ); 84 void slotModifiedChanged( bool );
85 85
86 void save(); 86 void save();
87 void backupAllFiles(); 87 void backupAllFiles();
88 void saveStopTimer(); 88 void saveStopTimer();
89 void configureToolBar( int ); 89 void configureToolBar( int );
90 void printSel(); 90 void printSel();
91 void printCal(); 91 void printCal();
92 void printListView(); 92 void printListView();
93 void saveCalendar(); 93 void saveCalendar();
94 void loadCalendar(); 94 void loadCalendar();
95 void exportVCalendar(); 95 void exportVCalendar();
96 void exportICalendar();
97 void exportCalendar( bool );
96 void fillFilterMenu(); 98 void fillFilterMenu();
97 void fillFilterMenuTB(); 99 void fillFilterMenuTB();
98 void selectFilter( int ); 100 void selectFilter( int );
99 void fillFilterMenuPopup(); 101 void fillFilterMenuPopup();
100 void selectFilterPopup( int ); 102 void selectFilterPopup( int );
101 void exportToPhone( int ); 103 void exportToPhone( int );
102 void toggleBeamReceive(); 104 void toggleBeamReceive();
103 void disableBR(bool); 105 void disableBR(bool);
104 signals: 106 signals:
105 void selectWeek ( int ); 107 void selectWeek ( int );
106 private slots: 108 private slots:
107 void slotResetFocus(); 109 void slotResetFocus();
108 void slotResetFocusLoop(); 110 void slotResetFocusLoop();
109 void showConfigureAgenda(); 111 void showConfigureAgenda();
110 void getFile( bool ); 112 void getFile( bool );
111 void syncFileRequest(); 113 void syncFileRequest();
112 114
113 protected: 115 protected:
114 int mFocusLoop; 116 int mFocusLoop;
115 void hideEvent ( QHideEvent * ); 117 void hideEvent ( QHideEvent * );
116 QString sentSyncFile(); 118 QString sentSyncFile();
117 void displayText( QString, QString); 119 void displayText( QString, QString);
118 void enableIncidenceActions( bool ); 120 void enableIncidenceActions( bool );
121 bool askForQuitOnSaveError();
119 122
120 private: 123 private:
121 124
122 QCString mCStringMess; 125 QCString mCStringMess;
123 QByteArray mByteData; 126 QByteArray mByteData;
124 127
125 //void setMenuBar( QMenuBar * ); 128 //void setMenuBar( QMenuBar * );
126 bool mBRdisabled; 129 bool mBRdisabled;
127#ifndef DESKTOP_VERSION 130#ifndef DESKTOP_VERSION
128 QCopChannel* infrared; 131 QCopChannel* infrared;
129#endif 132#endif
130 QAction* brAction; 133 QAction* brAction;
131 KSyncManager* mSyncManager; 134 KSyncManager* mSyncManager;
132 bool mClosed; 135 bool mClosed;
133 void saveOnClose(); 136 void saveOnClose();
134 bool mFlagKeyPressed; 137 bool mFlagKeyPressed;
135 bool mBlockAtStartup; 138 bool mBlockAtStartup;
136 KMenuBar *menuBar1; 139 KMenuBar *menuBar1;
137 QPEToolBar *iconToolBar; 140 QPEToolBar *iconToolBar;
138 QPEToolBar *viewToolBar; 141 QPEToolBar *viewToolBar;
139 QPEToolBar *navigatorToolBar; 142 QPEToolBar *navigatorToolBar;
140 QPEToolBar *filterToolBar; 143 QPEToolBar *filterToolBar;
141 KMenuBar *filterMenubar; 144 KMenuBar *filterMenubar;
142 QPopupMenu * filterPopupMenu; 145 QPopupMenu * filterPopupMenu;
143 QPopupMenu * mCurrentItemMenu; 146 QPopupMenu * mCurrentItemMenu;
144 void initActions(); 147 void initActions();
145 void setDefaultPreferences(); 148 void setDefaultPreferences();
146 void resizeEvent( QResizeEvent* e); 149 void resizeEvent( QResizeEvent* e);
147 void keyPressEvent ( QKeyEvent * ) ; 150 void keyPressEvent ( QKeyEvent * ) ;
148 void keyReleaseEvent ( QKeyEvent * ) ; 151 void keyReleaseEvent ( QKeyEvent * ) ;
149 QPopupMenu *configureToolBarMenu; 152 QPopupMenu *configureToolBarMenu;
150 QPopupMenu *selectFilterMenu; 153 QPopupMenu *selectFilterMenu;
151 QPopupMenu *selectFilterMenuTB; 154 QPopupMenu *selectFilterMenuTB;
152 QPopupMenu *configureAgendaMenu, *syncMenu; 155 QPopupMenu *configureAgendaMenu, *syncMenu;
153 CalendarLocal *mCalendar; 156 CalendarLocal *mCalendar;
154 CalendarView *mView; 157 CalendarView *mView;
155 QAction *mNewSubTodoAction; 158 QAction *mNewSubTodoAction;
156 QAction *mWeekAction; 159 QAction *mWeekAction;
157 QFont mWeekFont; 160 QFont mWeekFont;
158 QPixmap mWeekPixmap; 161 QPixmap mWeekPixmap;
159 QColor mWeekBgColor; 162 QColor mWeekBgColor;
160 163
161 QAction *mShowAction; 164 QAction *mShowAction;
162 QAction *mEditAction; 165 QAction *mEditAction;
163 QAction *mDeleteAction; 166 QAction *mDeleteAction;
164 QAction *mCloneAction; 167 QAction *mCloneAction;
165 QAction *mMoveAction; 168 QAction *mMoveAction;
166 QAction *mBeamAction; 169 QAction *mBeamAction;
167 QAction *mCancelAction; 170 QAction *mCancelAction;
168 QAction *mPrintSelAction; 171 QAction *mPrintSelAction;
169 172
170 QAction *mToggleNav; 173 QAction *mToggleNav;
171 QAction *mToggleFilter; 174 QAction *mToggleFilter;
172 QAction *mToggleAllday; 175 QAction *mToggleAllday;
173 QAction *actionFilterMenuTB; 176 QAction *actionFilterMenuTB;
174 177
175 void closeEvent( QCloseEvent* ce ); 178 void closeEvent( QCloseEvent* ce );
176 QTimer mSaveTimer; 179 QTimer mSaveTimer;
177 QTime mSaveTime; 180 QDateTime mSaveTimerStart;
178 int mSaveDelay; 181 int mSaveDelay;
179 //bool mBlockSaveFlag; 182 //bool mBlockSaveFlag;
180 bool mCalendarModifiedFlag; 183 bool mCalendarModifiedFlag;
181 QPixmap loadPixmap( QString ); 184 QPixmap loadPixmap( QString );
182 QPixmap listviewPix, listviewPix0, listviewPix20, listviewPix40, listviewPix60, listviewPix80, journalPix; 185 QPixmap listviewPix, listviewPix0, listviewPix20, listviewPix40, listviewPix60, listviewPix80, journalPix;
183}; 186};
184 187
185 188
186#endif 189#endif