summaryrefslogtreecommitdiff
path: root/src/de/danoeh/antennapod/asynctask
diff options
context:
space:
mode:
authordaniel oeh <daniel.oeh@gmail.com>2013-03-06 21:04:05 +0100
committerdaniel oeh <daniel.oeh@gmail.com>2013-03-06 21:04:05 +0100
commitb3a250c766253da57a917814a6f60e44f616e938 (patch)
treed26aec2b75fa0fa0117499110a7650317930b64b /src/de/danoeh/antennapod/asynctask
parentec1992f36c5bf1916ebaed8196705b2324486388 (diff)
parent7fe0e05304b5683d3a3cc0ba5a1938f73ffd54de (diff)
downloadAntennaPod-b3a250c766253da57a917814a6f60e44f616e938.zip
Merge branch 'apichanges' into develop
Diffstat (limited to 'src/de/danoeh/antennapod/asynctask')
-rw-r--r--src/de/danoeh/antennapod/asynctask/BitmapDecodeWorkerTask.java31
-rw-r--r--src/de/danoeh/antennapod/asynctask/ImageLoader.java (renamed from src/de/danoeh/antennapod/asynctask/FeedImageLoader.java)114
-rw-r--r--src/de/danoeh/antennapod/asynctask/OpmlExportWorker.java6
-rw-r--r--src/de/danoeh/antennapod/asynctask/OpmlFeedQueuer.java1
-rw-r--r--src/de/danoeh/antennapod/asynctask/OpmlImportWorker.java3
5 files changed, 76 insertions, 79 deletions
diff --git a/src/de/danoeh/antennapod/asynctask/BitmapDecodeWorkerTask.java b/src/de/danoeh/antennapod/asynctask/BitmapDecodeWorkerTask.java
index c23c4c66a..810a17165 100644
--- a/src/de/danoeh/antennapod/asynctask/BitmapDecodeWorkerTask.java
+++ b/src/de/danoeh/antennapod/asynctask/BitmapDecodeWorkerTask.java
@@ -11,10 +11,10 @@ import de.danoeh.antennapod.AppConfig;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.util.BitmapDecoder;
-public abstract class BitmapDecodeWorkerTask extends Thread {
+public class BitmapDecodeWorkerTask extends Thread {
protected int PREFERRED_LENGTH;
-
+
/** Can be thumbnail or cover */
protected int imageType;
@@ -25,7 +25,7 @@ public abstract class BitmapDecodeWorkerTask extends Thread {
protected String fileUrl;
private Handler handler;
-
+
private final int defaultCoverResource;
public BitmapDecodeWorkerTask(Handler handler, ImageView target,
@@ -36,7 +36,8 @@ public abstract class BitmapDecodeWorkerTask extends Thread {
this.fileUrl = fileUrl;
this.PREFERRED_LENGTH = length;
this.imageType = imageType;
- TypedArray res = target.getContext().obtainStyledAttributes(new int[] {R.attr.default_cover});
+ TypedArray res = target.getContext().obtainStyledAttributes(
+ new int[] { R.attr.default_cover });
this.defaultCoverResource = res.getResourceId(0, 0);
res.recycle();
}
@@ -45,7 +46,9 @@ public abstract class BitmapDecodeWorkerTask extends Thread {
* Should return true if tag of the imageview is still the same it was
* before the bitmap was decoded
*/
- abstract protected boolean tagsMatching(ImageView target);
+ protected boolean tagsMatching(ImageView target) {
+ return target.getTag() == null || target.getTag() == fileUrl;
+ }
protected void onPostExecute() {
// check if imageview is still supposed to display this image
@@ -64,13 +67,15 @@ public abstract class BitmapDecodeWorkerTask extends Thread {
f = new File(fileUrl);
}
if (fileUrl != null && f.exists()) {
- cBitmap = new CachedBitmap(BitmapDecoder.decodeBitmap(PREFERRED_LENGTH, fileUrl), PREFERRED_LENGTH);
+ cBitmap = new CachedBitmap(BitmapDecoder.decodeBitmap(
+ PREFERRED_LENGTH, fileUrl), PREFERRED_LENGTH);
if (cBitmap.getBitmap() != null) {
storeBitmapInCache(cBitmap);
} else {
Log.w(TAG, "Could not load bitmap. Using default image.");
- cBitmap = new CachedBitmap(BitmapFactory.decodeResource(target.getResources(),
- defaultCoverResource), PREFERRED_LENGTH);
+ cBitmap = new CachedBitmap(BitmapFactory.decodeResource(
+ target.getResources(), defaultCoverResource),
+ PREFERRED_LENGTH);
}
if (AppConfig.DEBUG)
Log.d(TAG, "Finished loading bitmaps");
@@ -98,15 +103,15 @@ public abstract class BitmapDecodeWorkerTask extends Thread {
protected void onInvalidFileUrl() {
Log.e(TAG, "FeedImage has no valid file url. Using default image");
- cBitmap = new CachedBitmap(BitmapFactory.decodeResource(target.getResources(),
- defaultCoverResource), PREFERRED_LENGTH);
+ cBitmap = new CachedBitmap(BitmapFactory.decodeResource(
+ target.getResources(), defaultCoverResource), PREFERRED_LENGTH);
}
protected void storeBitmapInCache(CachedBitmap cb) {
- FeedImageLoader loader = FeedImageLoader.getInstance();
- if (imageType == FeedImageLoader.IMAGE_TYPE_COVER) {
+ ImageLoader loader = ImageLoader.getInstance();
+ if (imageType == ImageLoader.IMAGE_TYPE_COVER) {
loader.addBitmapToCoverCache(fileUrl, cb);
- } else if (imageType == FeedImageLoader.IMAGE_TYPE_THUMBNAIL) {
+ } else if (imageType == ImageLoader.IMAGE_TYPE_THUMBNAIL) {
loader.addBitmapToThumbnailCache(fileUrl, cb);
}
}
diff --git a/src/de/danoeh/antennapod/asynctask/FeedImageLoader.java b/src/de/danoeh/antennapod/asynctask/ImageLoader.java
index 5e1994adb..d0f20d621 100644
--- a/src/de/danoeh/antennapod/asynctask/FeedImageLoader.java
+++ b/src/de/danoeh/antennapod/asynctask/ImageLoader.java
@@ -16,13 +16,11 @@ import de.danoeh.antennapod.AppConfig;
import de.danoeh.antennapod.PodcastApp;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.feed.FeedImage;
-import de.danoeh.antennapod.feed.FeedManager;
-import de.danoeh.antennapod.storage.DownloadRequester;
/** Caches and loads FeedImage bitmaps in the background */
-public class FeedImageLoader {
- private static final String TAG = "FeedImageLoader";
- private static FeedImageLoader singleton;
+public class ImageLoader {
+ private static final String TAG = "ImageLoader";
+ private static ImageLoader singleton;
public static final int IMAGE_TYPE_THUMBNAIL = 0;
public static final int IMAGE_TYPE_COVER = 1;
@@ -44,7 +42,7 @@ public class FeedImageLoader {
private LruCache<String, CachedBitmap> coverCache;
private LruCache<String, CachedBitmap> thumbnailCache;
- private FeedImageLoader() {
+ private ImageLoader() {
handler = new Handler();
executor = createExecutor();
@@ -79,9 +77,9 @@ public class FeedImageLoader {
});
}
- public static FeedImageLoader getInstance() {
+ public static ImageLoader getInstance() {
if (singleton == null) {
- singleton = new FeedImageLoader();
+ singleton = new ImageLoader();
}
return singleton;
}
@@ -92,8 +90,18 @@ public class FeedImageLoader {
* ImageView's size has already been set or inside a Runnable which is
* posted to the ImageView's message queue.
*/
+ public void loadCoverBitmap(String fileUrl, ImageView target) {
+ loadCoverBitmap(fileUrl, target, target.getHeight());
+ }
+
public void loadCoverBitmap(FeedImage image, ImageView target) {
- loadCoverBitmap(image, target, target.getHeight());
+ loadCoverBitmap((image != null) ? image.getFile_url() : null, target,
+ target.getHeight());
+ }
+
+ public void loadCoverBitmap(FeedImage image, ImageView target, int length) {
+ loadCoverBitmap((image != null) ? image.getFile_url() : null, target,
+ length);
}
/**
@@ -102,17 +110,18 @@ public class FeedImageLoader {
* ImageView's size has already been set or inside a Runnable which is
* posted to the ImageView's message queue.
*/
- public void loadCoverBitmap(FeedImage image, ImageView target, int length) {
- final int defaultCoverResource = getDefaultCoverResource(target.getContext());
-
- if (image != null && image.getFile_url() != null) {
- CachedBitmap cBitmap = getBitmapFromCoverCache(image.getFile_url());
+ public void loadCoverBitmap(String fileUrl, ImageView target, int length) {
+ final int defaultCoverResource = getDefaultCoverResource(target
+ .getContext());
+
+ if (fileUrl != null) {
+ CachedBitmap cBitmap = getBitmapFromCoverCache(fileUrl);
if (cBitmap != null && cBitmap.getLength() >= length) {
target.setImageBitmap(cBitmap.getBitmap());
} else {
target.setImageResource(defaultCoverResource);
- FeedImageDecodeWorkerTask worker = new FeedImageDecodeWorkerTask(
- handler, target, image, length, IMAGE_TYPE_COVER);
+ BitmapDecodeWorkerTask worker = new BitmapDecodeWorkerTask(
+ handler, target, fileUrl, length, IMAGE_TYPE_COVER);
executor.submit(worker);
}
} else {
@@ -126,8 +135,19 @@ public class FeedImageLoader {
* called if the ImageView's size has already been set or inside a Runnable
* which is posted to the ImageView's message queue.
*/
+ public void loadThumbnailBitmap(String fileUrl, ImageView target) {
+ loadThumbnailBitmap(fileUrl, target, target.getHeight());
+ }
+
public void loadThumbnailBitmap(FeedImage image, ImageView target) {
- loadThumbnailBitmap(image, target, target.getHeight());
+ loadThumbnailBitmap((image != null) ? image.getFile_url() : null,
+ target, target.getHeight());
+ }
+
+ public void loadThumbnailBitmap(FeedImage image, ImageView target,
+ int length) {
+ loadThumbnailBitmap((image != null) ? image.getFile_url() : null,
+ target, length);
}
/**
@@ -136,18 +156,18 @@ public class FeedImageLoader {
* called if the ImageView's size has already been set or inside a Runnable
* which is posted to the ImageView's message queue.
*/
- public void loadThumbnailBitmap(FeedImage image, ImageView target,
- int length) {
- final int defaultCoverResource = getDefaultCoverResource(target.getContext());
-
- if (image != null && image.getFile_url() != null) {
- CachedBitmap cBitmap = getBitmapFromThumbnailCache(image.getFile_url());
+ public void loadThumbnailBitmap(String fileUrl, ImageView target, int length) {
+ final int defaultCoverResource = getDefaultCoverResource(target
+ .getContext());
+
+ if (fileUrl != null) {
+ CachedBitmap cBitmap = getBitmapFromThumbnailCache(fileUrl);
if (cBitmap != null && cBitmap.getLength() >= length) {
target.setImageBitmap(cBitmap.getBitmap());
} else {
target.setImageResource(defaultCoverResource);
- FeedImageDecodeWorkerTask worker = new FeedImageDecodeWorkerTask(
- handler, target, image, length, IMAGE_TYPE_THUMBNAIL);
+ BitmapDecodeWorkerTask worker = new BitmapDecodeWorkerTask(
+ handler, target, fileUrl, length, IMAGE_TYPE_THUMBNAIL);
executor.submit(worker);
}
} else {
@@ -168,8 +188,8 @@ public class FeedImageLoader {
thumbnailCache.evictAll();
}
- public boolean isInThumbnailCache(FeedImage image) {
- return thumbnailCache.get(image.getFile_url()) != null;
+ public boolean isInThumbnailCache(String fileUrl) {
+ return thumbnailCache.get(fileUrl) != null;
}
private CachedBitmap getBitmapFromThumbnailCache(String key) {
@@ -180,8 +200,8 @@ public class FeedImageLoader {
thumbnailCache.put(key, bitmap);
}
- public boolean isInCoverCache(FeedImage image) {
- return coverCache.get(image.getFile_url()) != null;
+ public boolean isInCoverCache(String fileUrl) {
+ return coverCache.get(fileUrl) != null;
}
private CachedBitmap getBitmapFromCoverCache(String key) {
@@ -191,43 +211,13 @@ public class FeedImageLoader {
public void addBitmapToCoverCache(String key, CachedBitmap bitmap) {
coverCache.put(key, bitmap);
}
-
+
private int getDefaultCoverResource(Context context) {
- TypedArray res = context.obtainStyledAttributes(new int[] {R.attr.default_cover});
+ TypedArray res = context
+ .obtainStyledAttributes(new int[] { R.attr.default_cover });
final int defaultCoverResource = res.getResourceId(0, 0);
res.recycle();
return defaultCoverResource;
}
- class FeedImageDecodeWorkerTask extends BitmapDecodeWorkerTask {
-
- private static final String TAG = "FeedImageDecodeWorkerTask";
-
- protected FeedImage image;
-
- public FeedImageDecodeWorkerTask(Handler handler, ImageView target,
- FeedImage image, int length, int imageType) {
- super(handler, target, image.getFile_url(), length, imageType);
- this.image = image;
- }
-
- @Override
- protected boolean tagsMatching(ImageView target) {
- return target.getTag() == null || target.getTag() == image;
- }
-
- @Override
- protected void onInvalidFileUrl() {
- super.onInvalidFileUrl();
- if (image.getFile_url() != null
- && !DownloadRequester.getInstance()
- .isDownloadingFile(image)) {
- FeedManager.getInstance().notifyInvalidImageFile(
- PodcastApp.getInstance(), image);
- }
-
- }
-
- }
-
}
diff --git a/src/de/danoeh/antennapod/asynctask/OpmlExportWorker.java b/src/de/danoeh/antennapod/asynctask/OpmlExportWorker.java
index db9ae999c..978f53ac6 100644
--- a/src/de/danoeh/antennapod/asynctask/OpmlExportWorker.java
+++ b/src/de/danoeh/antennapod/asynctask/OpmlExportWorker.java
@@ -3,6 +3,7 @@ package de.danoeh.antennapod.asynctask;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
+import java.util.Arrays;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
@@ -15,6 +16,7 @@ import de.danoeh.antennapod.PodcastApp;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.feed.FeedManager;
import de.danoeh.antennapod.opml.OpmlWriter;
+import de.danoeh.antennapod.preferences.UserPreferences;
/** Writes an OPML file into the export directory in the background. */
public class OpmlExportWorker extends AsyncTask<Void, Void, Void> {
@@ -40,7 +42,7 @@ public class OpmlExportWorker extends AsyncTask<Void, Void, Void> {
OpmlWriter opmlWriter = new OpmlWriter();
if (output == null) {
output = new File(
- PodcastApp.getDataFolder(context, PodcastApp.EXPORT_DIR),
+ UserPreferences.getDataFolder(context, PodcastApp.EXPORT_DIR),
DEFAULT_OUTPUT_NAME);
if (output.exists()) {
Log.w(TAG, "Overwriting previously exported file.");
@@ -49,7 +51,7 @@ public class OpmlExportWorker extends AsyncTask<Void, Void, Void> {
}
try {
FileWriter writer = new FileWriter(output);
- opmlWriter.writeDocument(FeedManager.getInstance().getFeeds(),
+ opmlWriter.writeDocument(Arrays.asList(FeedManager.getInstance().getFeedsArray()),
writer);
writer.close();
} catch (IOException e) {
diff --git a/src/de/danoeh/antennapod/asynctask/OpmlFeedQueuer.java b/src/de/danoeh/antennapod/asynctask/OpmlFeedQueuer.java
index a3652e05d..4d9c9867e 100644
--- a/src/de/danoeh/antennapod/asynctask/OpmlFeedQueuer.java
+++ b/src/de/danoeh/antennapod/asynctask/OpmlFeedQueuer.java
@@ -7,7 +7,6 @@ import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import de.danoeh.antennapod.R;
-import de.danoeh.antennapod.activity.OpmlImportFromPathActivity;
import de.danoeh.antennapod.activity.OpmlImportHolder;
import de.danoeh.antennapod.feed.Feed;
import de.danoeh.antennapod.opml.OpmlElement;
diff --git a/src/de/danoeh/antennapod/asynctask/OpmlImportWorker.java b/src/de/danoeh/antennapod/asynctask/OpmlImportWorker.java
index 2c1d30bdb..5af06895f 100644
--- a/src/de/danoeh/antennapod/asynctask/OpmlImportWorker.java
+++ b/src/de/danoeh/antennapod/asynctask/OpmlImportWorker.java
@@ -1,6 +1,7 @@
package de.danoeh.antennapod.asynctask;
-import java.io.*;
+import java.io.IOException;
+import java.io.Reader;
import java.util.ArrayList;
import org.xmlpull.v1.XmlPullParserException;