-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 @@ -2549,2 +2549,3 @@ bool CalendarView::saveCalendars() restoreCalendarSettings(); + //saveError = "test error"; if ( !saveError.isEmpty() ) { @@ -4465,7 +4466,4 @@ void CalendarView::printPreview() } - -void CalendarView::exportICalendar() +bool CalendarView::exportICalendar( QString filename ) { - QString filename = KFileDialog::getSaveFileName("icalout.ics",i18n("*.ics|ICalendars"),this); - // Force correct extension @@ -4474,3 +4472,8 @@ void CalendarView::exportICalendar() FileStorage storage( mCalendar, filename, new ICalFormat() ); - storage.save(); + return storage.save(); +} + +bool CalendarView::exportICalendar() +{ + return exportICalendar( KFileDialog::getSaveFileName("icalout.ics",i18n("*.ics|ICalendars"),this) ); } diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h index b223315..8670832 100644 --- a/korganizer/calendarview.h +++ b/korganizer/calendarview.h @@ -378,3 +378,4 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser /** Export as iCalendar file */ - void exportICalendar(); + bool exportICalendar(); + bool exportICalendar( QString fn ); diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp index 2af605f..98d3e35 100644 --- a/korganizer/mainwindow.cpp +++ b/korganizer/mainwindow.cpp @@ -525,2 +525,21 @@ void MainWindow::showMaximized () } + +bool MainWindow::askForQuitOnSaveError() +{ + bool retval = false; + switch( QMessageBox::information( this, "KO/Pi", + i18n("Error saving data") + "!\n" + + i18n("You can save all data\nto another file via\nFile->Export->Export All Data") + "!\n" + + i18n("Do you really want\nto close KO/Pi?"), + i18n(" Yes, close "), i18n("No"), + 0, 1 ) ) { + case 0: + retval = true; + break; + default: + break; + } + return retval; +} + void MainWindow::closeEvent( QCloseEvent* ce ) @@ -532,3 +551,3 @@ void MainWindow::closeEvent( QCloseEvent* ce ) saveOnClose(); - if ( mCalendarModifiedFlag ) { + if ( mCalendarModifiedFlag && !askForQuitOnSaveError() ) { ce->ignore(); @@ -548,3 +567,3 @@ void MainWindow::closeEvent( QCloseEvent* ce ) saveOnClose(); - if ( mCalendarModifiedFlag ) { + if ( mCalendarModifiedFlag && !askForQuitOnSaveError() ) { ce->ignore(); @@ -1167,2 +1186,6 @@ void MainWindow::initActions() //importMenu->insertSeparator(); + action = new QAction( "export ical", i18n("Export All Data"), 0, + this ); + action->addTo( exportMenu_X ); + connect( action, SIGNAL( activated() ), SLOT( exportICalendar() ) ); action = new QAction( "import_qtopia", i18n("Export VCalendar"), 0, @@ -1969,3 +1992,3 @@ void MainWindow::slotModifiedChanged( bool ) mSaveTimer.start( msec, true ); // 1 minute - mSaveTime.restart(); + mSaveTimerStart = QDateTime::currentDateTime(); mSaveDelay = msec/1000; @@ -2019,8 +2042,10 @@ void MainWindow::save() if ( mSaveDelay ) { - if ( mSaveDelay + 60 < mSaveTime.elapsed()/1000 ) { - qDebug("KO: Save delay %d. Elapsed save time %d ", mSaveDelay, mSaveTime.elapsed()/1000 ); - qDebug("KO: Restarting save timer"); - int msec = 10000; - mSaveTimer.start( msec, true ); // 1 minute - mSaveTime.restart(); + int elapsed = mSaveTimerStart.secsTo( QDateTime::currentDateTime() ); + if ( mSaveDelay < elapsed ) { + qDebug("KO: Pending save after wakeup from suspend detected."); + qDebug("KO: Save delay %d sec. Elapsed save time %d sec.", mSaveDelay, elapsed ); + qDebug("KO: Restarting save timer to save in 15 sec."); + int msec = 15000; + mSaveTimer.start( msec, true ); + mSaveTimerStart = QDateTime::currentDateTime(); mSaveDelay = msec/1000; @@ -2577,7 +2602,11 @@ void MainWindow::importIcal() } - -void MainWindow::exportVCalendar() +void MainWindow::exportCalendar( bool iCalFormat ) { QString fn = KOPrefs::instance()->mLastVcalFile; - fn = KFileDialog::getSaveFileName( fn, i18n("Export vcal filename(*.vcs)"), this ); + if ( iCalFormat ) { + fn = QDir::homeDirPath()+"/kopiexport.ics"; + fn = KFileDialog::getSaveFileName( fn, i18n("Export iCal filename(*.ics)"), this ); + } + else + fn = KFileDialog::getSaveFileName( fn, i18n("Export vcal filename(*.vcs)"), this ); if ( fn == "" ) @@ -2598,4 +2627,8 @@ void MainWindow::exportVCalendar() if ( createbup ) { - if ( mView->exportVCalendar( fn ) ) { - KOPrefs::instance()->mLastVcalFile = fn; + bool success = false; + if ( iCalFormat ) + success = mView->exportICalendar( fn ); + else + success = mView->exportVCalendar( fn ); + if ( success ) { if ( fn.length() > 20 ) @@ -2609,2 +2642,10 @@ void MainWindow::exportVCalendar() } +void MainWindow::exportICalendar() +{ + exportCalendar( true ); +} +void MainWindow::exportVCalendar() +{ + exportCalendar( false ); +} QString MainWindow::sentSyncFile() diff --git a/korganizer/mainwindow.h b/korganizer/mainwindow.h index 657c0a8..71c069b 100644 --- a/korganizer/mainwindow.h +++ b/korganizer/mainwindow.h @@ -95,2 +95,4 @@ class MainWindow : public QMainWindow void exportVCalendar(); + void exportICalendar(); + void exportCalendar( bool ); void fillFilterMenu(); @@ -118,2 +120,3 @@ class MainWindow : public QMainWindow void enableIncidenceActions( bool ); + bool askForQuitOnSaveError(); @@ -176,3 +179,3 @@ class MainWindow : public QMainWindow QTimer mSaveTimer; - QTime mSaveTime; + QDateTime mSaveTimerStart; int mSaveDelay; |