summaryrefslogtreecommitdiff
path: root/src/de/podfetcher/activity/AddFeedActivity.java
diff options
context:
space:
mode:
authorDaniel Oeh <daniel@danielpc.(none)>2012-06-02 23:50:12 +0200
committerDaniel Oeh <daniel@danielpc.(none)>2012-06-02 23:50:12 +0200
commit72e608a04999bf37b0768465602889498b0daf06 (patch)
tree917bd7e0224956729c59280fe1b5a04acf9e75c8 /src/de/podfetcher/activity/AddFeedActivity.java
parent8f9db702911b1ad0a82f6ef4ceb2c47569b201d3 (diff)
downloadAntennaPod-72e608a04999bf37b0768465602889498b0daf06.zip
Eclipse transfer, Made sure that DownloadObserver cancels when Activity
stops
Diffstat (limited to 'src/de/podfetcher/activity/AddFeedActivity.java')
-rw-r--r--src/de/podfetcher/activity/AddFeedActivity.java68
1 files changed, 47 insertions, 21 deletions
diff --git a/src/de/podfetcher/activity/AddFeedActivity.java b/src/de/podfetcher/activity/AddFeedActivity.java
index 65202f2a4..2013d204e 100644
--- a/src/de/podfetcher/activity/AddFeedActivity.java
+++ b/src/de/podfetcher/activity/AddFeedActivity.java
@@ -21,16 +21,37 @@ import java.util.concurrent.Callable;
public class AddFeedActivity extends SherlockActivity {
private static final String TAG = "AddFeedActivity";
+ private DownloadRequester requester;
+
private EditText etxtFeedurl;
private Button butConfirm;
private Button butCancel;
+ private long downloadId;
-
+
+ private DownloadObserver observer;
+
+ private ProgressDialog progDialog;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.addfeed);
+ requester = DownloadRequester.getInstance();
+
+ createObserver();
+ progDialog = new ProgressDialog(this) {
+ @Override
+ public void onBackPressed() {
+ requester.cancelDownload(getContext(), downloadId);
+ observer.cancel(true);
+ createObserver();
+ dismiss();
+ }
+
+ };
+
etxtFeedurl = (EditText) findViewById(R.id.etxtFeedurl);
butConfirm = (Button) findViewById(R.id.butConfirm);
butCancel = (Button) findViewById(R.id.butCancel);
@@ -49,9 +70,30 @@ public class AddFeedActivity extends SherlockActivity {
finish();
}
});
+ }
+
+ private void createObserver() {
+ observer = new DownloadObserver(this) {
+ @Override
+ protected void onPostExecute(Boolean result) {
+ progDialog.dismiss();
+ finish();
+ }
-
-
+ @Override
+ protected void onProgressUpdate(DownloadObserver.DownloadStatus... values) {
+ DownloadObserver.DownloadStatus progr = values[0];
+ progDialog.setMessage(getContext().getString(progr.getStatusMsg())
+ + " (" + progr.getProgressPercent() + "%)");
+ }
+ };
+ }
+
+ @Override
+ protected void onStop() {
+ super.onStop();
+ Log.d(TAG, "Stopping Activity");
+ observer.cancel(true);
}
private void addNewFeed() {
@@ -60,29 +102,13 @@ public class AddFeedActivity extends SherlockActivity {
if(url != null) {
Feed feed = new Feed(url);
- DownloadRequester req = DownloadRequester.getInstance();
- req.downloadFeed(this, feed);
+ downloadId = requester.downloadFeed(this, feed);
observeDownload(feed);
}
}
private void observeDownload(Feed feed) {
- final ProgressDialog dialog = new ProgressDialog(this);
- final DownloadObserver observer = new DownloadObserver(this) {
- @Override
- protected void onPostExecute(Boolean result) {
- dialog.dismiss();
- finish();
- }
-
- @Override
- protected void onProgressUpdate(DownloadObserver.DownloadStatus... values) {
- DownloadObserver.DownloadStatus progr = values[0];
- dialog.setMessage(getContext().getString(progr.getStatusMsg())
- + " (" + progr.getProgressPercent() + "%)");
- }
- };
- dialog.show();
+ progDialog.show();
observer.execute(feed);
}