summaryrefslogtreecommitdiff
path: root/src/de/podfetcher/activity/AddFeedActivity.java
diff options
context:
space:
mode:
authordaniel oeh <daniel.oeh@gmail.com>2012-06-28 13:28:24 +0200
committerdaniel oeh <daniel.oeh@gmail.com>2012-06-28 13:28:24 +0200
commit3c4167ed498c90363f07c9755247b1ce7211470d (patch)
tree31f86392c0d1e5deefc29f8da529638b25819651 /src/de/podfetcher/activity/AddFeedActivity.java
parentfdd5c2dc7e6536f06df053709d383609ecaf9ac1 (diff)
downloadAntennaPod-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.java58
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() {