summaryrefslogtreecommitdiffabout
path: root/korganizer
Unidiff
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
@@ -2546,8 +2546,9 @@ bool CalendarView::saveCalendars()
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;
@@ -4462,18 +4463,20 @@ void CalendarView::printPreview()
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{
diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h
index b223315..8670832 100644
--- a/korganizer/calendarview.h
+++ b/korganizer/calendarview.h
@@ -375,9 +375,10 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser
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
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index 2af605f..98d3e35 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -522,16 +522,35 @@ void MainWindow::showMaximized ()
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;
@@ -545,9 +564,9 @@ void MainWindow::closeEvent( QCloseEvent* ce )
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;
@@ -1164,8 +1183,12 @@ void MainWindow::initActions()
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() ) );
@@ -1966,9 +1989,9 @@ void MainWindow::slotModifiedChanged( bool )
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}
@@ -2016,14 +2039,16 @@ void MainWindow::backupAllFiles()
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 }
@@ -2574,13 +2599,17 @@ void MainWindow::importIcal()
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 );
@@ -2595,10 +2624,14 @@ void MainWindow::exportVCalendar()
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 );
@@ -2606,8 +2639,16 @@ void MainWindow::exportVCalendar()
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" ) );
diff --git a/korganizer/mainwindow.h b/korganizer/mainwindow.h
index 657c0a8..71c069b 100644
--- a/korganizer/mainwindow.h
+++ b/korganizer/mainwindow.h
@@ -92,8 +92,10 @@ class MainWindow : public QMainWindow
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();
@@ -115,8 +117,9 @@ class MainWindow : public QMainWindow
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;
@@ -173,9 +176,9 @@ class MainWindow : public QMainWindow
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 );