-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() } restoreCalendarSettings(); + //saveError = "test error"; if ( !saveError.isEmpty() ) { saveError = KGlobal::formatMessage( i18n("Calendar(s) not saved:"),0 )+"\n" + saveError; @@ -4464,14 +4465,16 @@ void CalendarView::printPreview() #endif } - -void CalendarView::exportICalendar() +bool CalendarView::exportICalendar( QString filename ) { - QString filename = KFileDialog::getSaveFileName("icalout.ics",i18n("*.ics|ICalendars"),this); - // Force correct extension if (filename.right(4) != ".ics") filename += ".ics"; 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 @@ -377,5 +377,6 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser /** Export as iCalendar file */ - void exportICalendar(); + bool exportICalendar(); + bool exportICalendar( QString fn ); /** 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 () mClosed = false; } + +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 ) { @@ -531,5 +550,5 @@ void MainWindow::closeEvent( QCloseEvent* ce ) if ( ! KOPrefs::instance()->mAskForQuit ) { saveOnClose(); - if ( mCalendarModifiedFlag ) { + if ( mCalendarModifiedFlag && !askForQuitOnSaveError() ) { ce->ignore(); return; @@ -547,5 +566,5 @@ void MainWindow::closeEvent( QCloseEvent* ce ) case 0: saveOnClose(); - if ( mCalendarModifiedFlag ) { + if ( mCalendarModifiedFlag && !askForQuitOnSaveError() ) { ce->ignore(); return; @@ -1166,4 +1185,8 @@ void MainWindow::initActions() importMenu->insertItem( i18n("Import"), importMenu_X ); //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, this ); @@ -1968,5 +1991,5 @@ void MainWindow::slotModifiedChanged( bool ) msec = 1000 * 600; mSaveTimer.start( msec, true ); // 1 minute - mSaveTime.restart(); + mSaveTimerStart = QDateTime::currentDateTime(); mSaveDelay = msec/1000; qDebug("KO: Saving File in %d secs!", msec/1000); @@ -2018,10 +2041,12 @@ 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; return; @@ -2576,9 +2601,13 @@ 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 == "" ) return; @@ -2597,6 +2626,10 @@ 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 ) mes = i18n("KO/Pi:Exported to ...%1").arg(fn.right(20)) ; @@ -2608,4 +2641,12 @@ 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 @@ -94,4 +94,6 @@ class MainWindow : public QMainWindow void loadCalendar(); void exportVCalendar(); + void exportICalendar(); + void exportCalendar( bool ); void fillFilterMenu(); void fillFilterMenuTB(); @@ -117,4 +119,5 @@ class MainWindow : public QMainWindow void displayText( QString, QString); void enableIncidenceActions( bool ); + bool askForQuitOnSaveError(); private: @@ -175,5 +178,5 @@ class MainWindow : public QMainWindow void closeEvent( QCloseEvent* ce ); QTimer mSaveTimer; - QTime mSaveTime; + QDateTime mSaveTimerStart; int mSaveDelay; //bool mBlockSaveFlag; |