diff options
author | daniel oeh <daniel.oeh@gmail.com> | 2012-06-28 13:28:24 +0200 |
---|---|---|
committer | daniel oeh <daniel.oeh@gmail.com> | 2012-06-28 13:28:24 +0200 |
commit | 3c4167ed498c90363f07c9755247b1ce7211470d (patch) | |
tree | 31f86392c0d1e5deefc29f8da529638b25819651 /src/de/podfetcher/activity/AddFeedActivity.java | |
parent | fdd5c2dc7e6536f06df053709d383609ecaf9ac1 (diff) | |
download | AntennaPod-3c4167ed498c90363f07c9755247b1ce7211470d.zip |
Added more error handling when adding new feeds
Diffstat (limited to 'src/de/podfetcher/activity/AddFeedActivity.java')
-rw-r--r-- | src/de/podfetcher/activity/AddFeedActivity.java | 58 |
1 files changed, 49 insertions, 9 deletions
diff --git a/src/de/podfetcher/activity/AddFeedActivity.java b/src/de/podfetcher/activity/AddFeedActivity.java index e43617c0d..e1da778eb 100644 --- a/src/de/podfetcher/activity/AddFeedActivity.java +++ b/src/de/podfetcher/activity/AddFeedActivity.java @@ -4,9 +4,11 @@ import android.os.Bundle; import android.widget.Button; import android.widget.EditText; import android.view.View; +import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.BroadcastReceiver; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.util.Log; @@ -16,6 +18,8 @@ import de.podfetcher.asynctask.DownloadStatus; import de.podfetcher.feed.Feed; import de.podfetcher.feed.FeedManager; import de.podfetcher.storage.DownloadRequester; +import de.podfetcher.util.ConnectionTester; +import de.podfetcher.util.DownloadError; import de.podfetcher.util.URLChecker; import de.podfetcher.service.DownloadService; @@ -52,7 +56,7 @@ public class AddFeedActivity extends SherlockActivity { requester = DownloadRequester.getInstance(); manager = FeedManager.getInstance(); - + progDialog = new ProgressDialog(this) { @Override public void onBackPressed() { @@ -61,7 +65,7 @@ public class AddFeedActivity extends SherlockActivity { } else { requester.cancelDownload(getContext(), downloadId); } - + unregisterReceiver(downloadCompleted); dismiss(); } @@ -93,7 +97,7 @@ public class AddFeedActivity extends SherlockActivity { super.onStop(); Log.d(TAG, "Stopping Activity"); } - + @Override protected void onPause() { super.onPause(); @@ -102,25 +106,48 @@ public class AddFeedActivity extends SherlockActivity { } catch (IllegalArgumentException e) { // ignore } - - } + } private void addNewFeed() { String url = etxtFeedurl.getText().toString(); url = URLChecker.prepareURL(url); if (url != null) { - Feed feed = new Feed(url, new Date()); - downloadId = requester.downloadFeed(this, feed); + final Feed feed = new Feed(url, new Date()); + final ConnectionTester conTester = new ConnectionTester(url, this, + new ConnectionTester.Callback() { + + @Override + public void onConnectionSuccessful() { + downloadId = requester.downloadFeed( + AddFeedActivity.this, feed); + + } + + @Override + public void onConnectionFailure() { + int reason = DownloadError.ERROR_CONNECTION_ERROR; + long statusId = manager.addDownloadStatus( + AddFeedActivity.this, new DownloadStatus( + feed, reason, false)); + Intent intent = new Intent(DownloadService.ACTION_DOWNLOAD_HANDLED); + intent.putExtra(DownloadService.EXTRA_DOWNLOAD_ID, downloadId); + intent.putExtra(DownloadService.EXTRA_STATUS_ID, statusId); + AddFeedActivity.this.sendBroadcast(intent); + } + }); observeDownload(feed); + new Thread(conTester).start(); + } } private void observeDownload(Feed feed) { progDialog.show(); progDialog.setMessage("Downloading Feed"); - registerReceiver(downloadCompleted, new IntentFilter(DownloadService.ACTION_DOWNLOAD_HANDLED)); + registerReceiver(downloadCompleted, new IntentFilter( + DownloadService.ACTION_DOWNLOAD_HANDLED)); } private void updateProgDialog(final String msg) { @@ -138,7 +165,20 @@ public class AddFeedActivity extends SherlockActivity { } private void handleDownloadError(DownloadStatus status) { - + final AlertDialog errorDialog = new AlertDialog.Builder(this).create(); + errorDialog.setTitle(R.string.error_label); + errorDialog.setMessage(getString(R.string.error_msg_prefix) + " " + + DownloadError.getErrorString(this, status.getReason())); + errorDialog.setButton("OK", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + errorDialog.dismiss(); + } + }); + if (progDialog.isShowing()) { + progDialog.dismiss(); + } + errorDialog.show(); } private BroadcastReceiver downloadCompleted = new BroadcastReceiver() { |