-rw-r--r-- | korganizer/calendarview.cpp | 13 | ||||
-rw-r--r-- | korganizer/calendarview.h | 3 | ||||
-rw-r--r-- | korganizer/mainwindow.cpp | 69 | ||||
-rw-r--r-- | korganizer/mainwindow.h | 5 |
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 | |||
@@ -2548,4 +2548,5 @@ bool CalendarView::saveCalendars() | |||
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; |
@@ -4464,14 +4465,16 @@ void CalendarView::printPreview() | |||
4464 | #endif | 4465 | #endif |
4465 | } | 4466 | } |
4466 | 4467 | bool CalendarView::exportICalendar( QString filename ) | |
4467 | void 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 | |||
4476 | bool CalendarView::exportICalendar() | ||
4477 | { | ||
4478 | return exportICalendar( KFileDialog::getSaveFileName("icalout.ics",i18n("*.ics|ICalendars"),this) ); | ||
4476 | } | 4479 | } |
4477 | 4480 | ||
diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h index b223315..8670832 100644 --- a/korganizer/calendarview.h +++ b/korganizer/calendarview.h | |||
@@ -377,5 +377,6 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser | |||
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 */ |
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp index 2af605f..98d3e35 100644 --- a/korganizer/mainwindow.cpp +++ b/korganizer/mainwindow.cpp | |||
@@ -524,4 +524,23 @@ void MainWindow::showMaximized () | |||
524 | mClosed = false; | 524 | mClosed = false; |
525 | } | 525 | } |
526 | |||
527 | bool 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 | |||
526 | void MainWindow::closeEvent( QCloseEvent* ce ) | 545 | void MainWindow::closeEvent( QCloseEvent* ce ) |
527 | { | 546 | { |
@@ -531,5 +550,5 @@ void MainWindow::closeEvent( QCloseEvent* ce ) | |||
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; |
@@ -547,5 +566,5 @@ void MainWindow::closeEvent( QCloseEvent* ce ) | |||
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; |
@@ -1166,4 +1185,8 @@ void MainWindow::initActions() | |||
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 ); |
@@ -1968,5 +1991,5 @@ void MainWindow::slotModifiedChanged( bool ) | |||
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); |
@@ -2018,10 +2041,12 @@ void 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; |
@@ -2576,9 +2601,13 @@ void MainWindow::importIcal() | |||
2576 | 2601 | ||
2577 | } | 2602 | } |
2578 | 2603 | void MainWindow::exportCalendar( bool iCalFormat ) | |
2579 | void 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; |
@@ -2597,6 +2626,10 @@ void MainWindow::exportVCalendar() | |||
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)) ; |
@@ -2608,4 +2641,12 @@ void MainWindow::exportVCalendar() | |||
2608 | 2641 | ||
2609 | } | 2642 | } |
2643 | void MainWindow::exportICalendar() | ||
2644 | { | ||
2645 | exportCalendar( true ); | ||
2646 | } | ||
2647 | void MainWindow::exportVCalendar() | ||
2648 | { | ||
2649 | exportCalendar( false ); | ||
2650 | } | ||
2610 | QString MainWindow::sentSyncFile() | 2651 | QString MainWindow::sentSyncFile() |
2611 | { | 2652 | { |
diff --git a/korganizer/mainwindow.h b/korganizer/mainwindow.h index 657c0a8..71c069b 100644 --- a/korganizer/mainwindow.h +++ b/korganizer/mainwindow.h | |||
@@ -94,4 +94,6 @@ class MainWindow : public QMainWindow | |||
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(); |
@@ -117,4 +119,5 @@ class MainWindow : public QMainWindow | |||
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: |
@@ -175,5 +178,5 @@ class MainWindow : public QMainWindow | |||
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; |