diff options
Diffstat (limited to 'kresources/remote/resourceremote.cpp')
-rw-r--r-- | kresources/remote/resourceremote.cpp | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/kresources/remote/resourceremote.cpp b/kresources/remote/resourceremote.cpp index 3c9db7695..68d484c01 100644 --- a/kresources/remote/resourceremote.cpp +++ b/kresources/remote/resourceremote.cpp @@ -30,6 +30,7 @@ #include <kurl.h> #include <kio/job.h> #include <klocale.h> +#include <kmessagebox.h> #include <kstandarddirs.h> #include <libkcal/icalformat.h> @@ -220,7 +221,20 @@ void ResourceRemote::slotPercent( KIO::Job *, unsigned long percent ) void ResourceRemote::slotLoadJobResult( KIO::Job *job ) { if ( job->error() ) { - job->showErrorDialog( 0 ); + // TODO: Should detect 404, 401 etc. vs host not found and prompt to create new resource only when 404 is returned + QString warningString = QString("<b>") + i18n("Remote data access failure") + QString("</b><p>") + i18n("Detailed information") \ + + QString(":<br>") + job->errorString() + QString("<p>") + i18n("What would you like to do?"); + int rc = KMessageBox::warningContinueCancel(0, + warningString, i18n("Remote Data Access Failure"), i18n("&Continue with cached resource")); + if ( rc == KMessageBox::Continue ) { + mCalendar.close(); + disableChangeNotification(); + loadCache(); + enableChangeNotification(); + + emit resourceChanged( this ); + } + //job->showErrorDialog( 0 ); } else { kdDebug(5800) << "ResourceRemote::slotLoadJobResult() success" << endl; @@ -284,7 +298,7 @@ void ResourceRemote::slotSaveJobResult( KIO::Job *job ) job->showErrorDialog( 0 ); } else { kdDebug(5800) << "ResourceRemote::slotSaveJobResult() success" << endl; - + Incidence::List::ConstIterator it; for( it = mChangedIncidences.begin(); it != mChangedIncidences.end(); ++it ) { @@ -292,7 +306,7 @@ void ResourceRemote::slotSaveJobResult( KIO::Job *job ) } mChangedIncidences.clear(); } - + mUploadJob = 0; emit resourceSaved( this ); |