package org.ebookdroid.ui.opds.adapters; import org.sufficientlysecure.viewer.R; import org.ebookdroid.opds.exceptions.AuthorizationRequiredException; import org.ebookdroid.opds.exceptions.OPDSException; import org.ebookdroid.opds.model.Book; import org.ebookdroid.opds.model.BookDownloadLink; import android.content.DialogInterface.OnCancelListener; import java.io.File; import org.emdev.ui.progress.IProgressIndicator; import org.emdev.ui.tasks.BaseFileAsyncTask; final class DownloadBookTask extends BaseFileAsyncTask<Object, DownloadBookResult> implements OnCancelListener, IProgressIndicator { private final OPDSAdapter adapter; public DownloadBookTask(OPDSAdapter adapter) { super(adapter.context, R.string.opds_connecting, R.string.opds_download_complete, R.string.opds_download_error, true); this.adapter = adapter; } @Override protected DownloadBookResult doInBackground(final Object... params) { final Book book = (Book) params[0]; final BookDownloadLink link = (BookDownloadLink) params[1]; try { final File file = adapter.client.downloadBook(book, link, this); return new DownloadBookResult(book, link, file); } catch (final OPDSException ex) { return new DownloadBookResult(book, link, ex); } } @Override protected void onPostExecute(final DownloadBookResult result) { super.onPostExecute(result); if (result != null) { if (result.error instanceof AuthorizationRequiredException) { adapter.showAuthDlg(result); } else if (result.error instanceof OPDSException) { adapter.showErrorDlg(R.string.opds_retry_download, R.id.actions_retryDownloadBook, result, (OPDSException) result.error); } else if (result.error != null) { adapter.showErrorDlg(R.string.opds_retry_download, R.id.actions_retryDownloadBook, result, new OPDSException(result.error)); } } adapter.startLoadThumbnails(); } @Override protected void processError(final Throwable error) { } }