diff options
author | daniel oeh <daniel.oeh@gmail.com> | 2013-03-06 21:04:05 +0100 |
---|---|---|
committer | daniel oeh <daniel.oeh@gmail.com> | 2013-03-06 21:04:05 +0100 |
commit | b3a250c766253da57a917814a6f60e44f616e938 (patch) | |
tree | d26aec2b75fa0fa0117499110a7650317930b64b /src/de/danoeh/antennapod/asynctask | |
parent | ec1992f36c5bf1916ebaed8196705b2324486388 (diff) | |
parent | 7fe0e05304b5683d3a3cc0ba5a1938f73ffd54de (diff) | |
download | AntennaPod-b3a250c766253da57a917814a6f60e44f616e938.zip |
Merge branch 'apichanges' into develop
Diffstat (limited to 'src/de/danoeh/antennapod/asynctask')
-rw-r--r-- | src/de/danoeh/antennapod/asynctask/BitmapDecodeWorkerTask.java | 31 | ||||
-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.java | 6 | ||||
-rw-r--r-- | src/de/danoeh/antennapod/asynctask/OpmlFeedQueuer.java | 1 | ||||
-rw-r--r-- | src/de/danoeh/antennapod/asynctask/OpmlImportWorker.java | 3 |
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; |