summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/de/danoeh/antennapod/asynctask/DownloadObserver.java26
-rw-r--r--src/de/danoeh/antennapod/feed/FeedManager.java19
-rw-r--r--src/de/danoeh/antennapod/fragment/FeedlistFragment.java29
-rw-r--r--src/de/danoeh/antennapod/fragment/ItemlistFragment.java40
-rw-r--r--src/de/danoeh/antennapod/fragment/QueueFragment.java26
-rw-r--r--src/de/danoeh/antennapod/fragment/UnreadItemlistFragment.java26
-rw-r--r--src/de/danoeh/antennapod/service/DownloadService.java6
-rw-r--r--src/de/danoeh/antennapod/storage/PodDBAdapter.java3
-rw-r--r--src/de/danoeh/antennapod/util/URLChecker.java4
9 files changed, 88 insertions, 91 deletions
diff --git a/src/de/danoeh/antennapod/asynctask/DownloadObserver.java b/src/de/danoeh/antennapod/asynctask/DownloadObserver.java
index a626be34e..9da0ad90c 100644
--- a/src/de/danoeh/antennapod/asynctask/DownloadObserver.java
+++ b/src/de/danoeh/antennapod/asynctask/DownloadObserver.java
@@ -45,7 +45,8 @@ public class DownloadObserver extends AsyncTask<Void, Void, Void> {
@Override
protected void onCancelled() {
- if (AppConfig.DEBUG) Log.d(TAG, "Task was cancelled.");
+ if (AppConfig.DEBUG)
+ Log.d(TAG, "Task was cancelled.");
statusList.clear();
for (DownloadObserver.Callback callback : observer) {
callback.onFinish();
@@ -54,7 +55,8 @@ public class DownloadObserver extends AsyncTask<Void, Void, Void> {
@Override
protected void onPostExecute(Void result) {
- if (AppConfig.DEBUG) Log.d(TAG, "Background task has finished");
+ if (AppConfig.DEBUG)
+ Log.d(TAG, "Background task has finished");
statusList.clear();
for (DownloadObserver.Callback callback : observer) {
callback.onFinish();
@@ -62,7 +64,8 @@ public class DownloadObserver extends AsyncTask<Void, Void, Void> {
}
protected Void doInBackground(Void... params) {
- if (AppConfig.DEBUG) Log.d(TAG, "Background Task started.");
+ if (AppConfig.DEBUG)
+ Log.d(TAG, "Background Task started.");
while (downloadsLeft() && !isCancelled()) {
refreshStatuslist();
publishProgress();
@@ -72,7 +75,8 @@ public class DownloadObserver extends AsyncTask<Void, Void, Void> {
Log.w(TAG, "Thread was interrupted while waiting.");
}
}
- if (AppConfig.DEBUG) Log.d(TAG, "Background Task finished.");
+ if (AppConfig.DEBUG)
+ Log.d(TAG, "Background Task finished.");
return null;
}
@@ -144,13 +148,17 @@ public class DownloadObserver extends AsyncTask<Void, Void, Void> {
/** Request a cursor with all running Feedfile downloads */
private Cursor getDownloadCursor() {
// Collect download ids
- int numDownloads = requester.getNumberOfDownloads();
- long ids[] = new long[numDownloads];
- for (int i = 0; i < numDownloads; i++) {
- ids[i] = requester.getDownloadAt(i).getDownloadId();
+
+ ArrayList<Long> ids = new ArrayList<Long>();
+ for (FeedFile download : requester.getDownloads()) {
+ ids.add(download.getDownloadId());
}
DownloadManager.Query query = new DownloadManager.Query();
- query.setFilterById(ids);
+ long[] pIds = new long[ids.size()];
+ for (int x = 0; x < ids.size(); x++) {
+ pIds[x] = ids.get(x);
+ }
+ query.setFilterById(pIds);
DownloadManager manager = (DownloadManager) context
.getSystemService(Context.DOWNLOAD_SERVICE);
diff --git a/src/de/danoeh/antennapod/feed/FeedManager.java b/src/de/danoeh/antennapod/feed/FeedManager.java
index 79e5f8abd..3eb838bd4 100644
--- a/src/de/danoeh/antennapod/feed/FeedManager.java
+++ b/src/de/danoeh/antennapod/feed/FeedManager.java
@@ -4,6 +4,7 @@ import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
+import java.util.List;
import de.danoeh.antennapod.AppConfig;
import de.danoeh.antennapod.activity.MediaplayerActivity;
@@ -36,27 +37,27 @@ public class FeedManager {
private static FeedManager singleton;
- private ArrayList<Feed> feeds;
+ private List<Feed> feeds;
private ArrayList<FeedCategory> categories;
/** Contains all items where 'read' is false */
- private ArrayList<FeedItem> unreadItems;
+ private List<FeedItem> unreadItems;
/** Contains completed Download status entries */
private ArrayList<DownloadStatus> downloadLog;
/** Contains the queue of items to be played. */
- private ArrayList<FeedItem> queue;
+ private List<FeedItem> queue;
private DownloadRequester requester;
private FeedManager() {
- feeds = new ArrayList<Feed>();
+ feeds = Collections.synchronizedList(new ArrayList<Feed>());
categories = new ArrayList<FeedCategory>();
- unreadItems = new ArrayList<FeedItem>();
+ unreadItems = Collections.synchronizedList(new ArrayList<FeedItem>());
requester = DownloadRequester.getInstance();
downloadLog = new ArrayList<DownloadStatus>();
- queue = new ArrayList<FeedItem>();
+ queue = Collections.synchronizedList(new ArrayList<FeedItem>());
}
public static FeedManager getInstance() {
@@ -740,11 +741,11 @@ public class FeedManager {
cursor.close();
}
- public ArrayList<Feed> getFeeds() {
+ public List<Feed> getFeeds() {
return feeds;
}
- public ArrayList<FeedItem> getUnreadItems() {
+ public List<FeedItem> getUnreadItems() {
return unreadItems;
}
@@ -752,7 +753,7 @@ public class FeedManager {
return downloadLog;
}
- public ArrayList<FeedItem> getQueue() {
+ public List<FeedItem> getQueue() {
return queue;
}
diff --git a/src/de/danoeh/antennapod/fragment/FeedlistFragment.java b/src/de/danoeh/antennapod/fragment/FeedlistFragment.java
index 0b4e561f7..ae16fad4c 100644
--- a/src/de/danoeh/antennapod/fragment/FeedlistFragment.java
+++ b/src/de/danoeh/antennapod/fragment/FeedlistFragment.java
@@ -11,6 +11,7 @@ import de.danoeh.antennapod.AppConfig;
import de.danoeh.antennapod.R;
import android.os.AsyncTask;
import android.os.Bundle;
+import android.annotation.SuppressLint;
import android.app.Activity;
import android.view.View;
import android.view.ViewGroup;
@@ -54,12 +55,11 @@ public class FeedlistFragment extends SherlockListFragment implements
pActivity = null;
}
-
-
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- if (AppConfig.DEBUG) Log.d(TAG, "Creating");
+ if (AppConfig.DEBUG)
+ Log.d(TAG, "Creating");
manager = FeedManager.getInstance();
fla = new FeedlistAdapter(pActivity, 0, manager.getFeeds());
setListAdapter(fla);
@@ -82,7 +82,9 @@ public class FeedlistFragment extends SherlockListFragment implements
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
Feed selection = fla.getItem(position);
- if (AppConfig.DEBUG) Log.d(TAG, "Selected Feed with title " + selection.getTitle());
+ if (AppConfig.DEBUG)
+ Log.d(TAG,
+ "Selected Feed with title " + selection.getTitle());
if (selection != null) {
if (mActionMode != null) {
mActionMode.finish();
@@ -102,6 +104,7 @@ public class FeedlistFragment extends SherlockListFragment implements
@Override
public void onResume() {
super.onResume();
+ if (AppConfig.DEBUG) Log.d(TAG, "Resuming");
IntentFilter filter = new IntentFilter();
filter.addAction(DownloadService.ACTION_DOWNLOAD_HANDLED);
filter.addAction(DownloadService.ACTION_FEED_SYNC_COMPLETED);
@@ -124,8 +127,16 @@ public class FeedlistFragment extends SherlockListFragment implements
private BroadcastReceiver contentUpdate = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
- if (AppConfig.DEBUG) Log.d(TAG, "Received contentUpdate Intent.");
- fla.notifyDataSetChanged();
+ if (AppConfig.DEBUG)
+ Log.d(TAG, "Received contentUpdate Intent.");
+ getActivity().runOnUiThread(new Runnable() {
+
+ @Override
+ public void run() {
+ fla.notifyDataSetChanged();
+
+ }
+ });
}
};
@@ -150,6 +161,7 @@ public class FeedlistFragment extends SherlockListFragment implements
return FeedMenuHandler.onPrepareOptionsMenu(menu, selectedFeed);
}
+ @SuppressLint("NewApi")
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
if (FeedMenuHandler.onOptionsItemClicked(getSherlockActivity(), item,
@@ -166,7 +178,8 @@ public class FeedlistFragment extends SherlockListFragment implements
}
};
if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.GINGERBREAD_MR1) {
- remover.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, selectedFeed);
+ remover.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,
+ selectedFeed);
} else {
remover.execute(selectedFeed);
}
@@ -183,5 +196,5 @@ public class FeedlistFragment extends SherlockListFragment implements
selectedFeed = null;
fla.setSelectedItemIndex(FeedlistAdapter.SELECTION_NONE);
}
-
+
}
diff --git a/src/de/danoeh/antennapod/fragment/ItemlistFragment.java b/src/de/danoeh/antennapod/fragment/ItemlistFragment.java
index 038737d41..9d440a121 100644
--- a/src/de/danoeh/antennapod/fragment/ItemlistFragment.java
+++ b/src/de/danoeh/antennapod/fragment/ItemlistFragment.java
@@ -1,6 +1,7 @@
package de.danoeh.antennapod.fragment;
import java.util.ArrayList;
+import java.util.List;
import android.content.BroadcastReceiver;
import android.content.Context;
@@ -43,7 +44,7 @@ public class ItemlistFragment extends SherlockListFragment implements
protected DownloadRequester requester;
/** The feed which the activity displays */
- protected ArrayList<FeedItem> items;
+ protected List<FeedItem> items;
/**
* This is only not null if the fragment displays the items of a specific
* feed
@@ -56,7 +57,7 @@ public class ItemlistFragment extends SherlockListFragment implements
/** Argument for FeeditemlistAdapter */
protected boolean showFeedtitle;
- public ItemlistFragment(ArrayList<FeedItem> items, boolean showFeedtitle) {
+ public ItemlistFragment(List<FeedItem> items, boolean showFeedtitle) {
super();
this.items = items;
this.showFeedtitle = showFeedtitle;
@@ -102,26 +103,37 @@ public class ItemlistFragment extends SherlockListFragment implements
onButActionClicked, showFeedtitle);
setListAdapter(fila);
}
-
-
@Override
public void onPause() {
super.onPause();
- getActivity().unregisterReceiver(contentUpdate);
if (mActionMode != null) {
mActionMode.finish();
}
}
@Override
+ public void onDestroy() {
+ super.onDestroy();
+ getActivity().unregisterReceiver(contentUpdate);
+
+ }
+
+ @Override
public void onResume() {
super.onResume();
- fila.notifyDataSetChanged();
+ getActivity().runOnUiThread(new Runnable() {
+
+ @Override
+ public void run() {
+ fila.notifyDataSetChanged();
+ }
+ });
updateProgressBarVisibility();
IntentFilter filter = new IntentFilter();
filter.addAction(DownloadService.ACTION_DOWNLOAD_HANDLED);
- filter.addAction(DownloadRequester.ACTION_DOWNLOAD_QUEUED);
+ filter.addAction(FeedManager.ACTION_QUEUE_UPDATE);
+ filter.addAction(FeedManager.ACTION_UNREAD_ITEMS_UPDATE);
getActivity().registerReceiver(contentUpdate, filter);
}
@@ -140,9 +152,17 @@ public class ItemlistFragment extends SherlockListFragment implements
private BroadcastReceiver contentUpdate = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
- if (AppConfig.DEBUG) Log.d(TAG, "Received contentUpdate Intent.");
- fila.notifyDataSetChanged();
- updateProgressBarVisibility();
+ if (AppConfig.DEBUG)
+ Log.d(TAG, "Received contentUpdate Intent.");
+ getActivity().runOnUiThread(new Runnable() {
+
+ @Override
+ public void run() {
+ fila.notifyDataSetChanged();
+ updateProgressBarVisibility();
+ }
+
+ });
}
};
diff --git a/src/de/danoeh/antennapod/fragment/QueueFragment.java b/src/de/danoeh/antennapod/fragment/QueueFragment.java
index ff2a682ad..48d2f3836 100644
--- a/src/de/danoeh/antennapod/fragment/QueueFragment.java
+++ b/src/de/danoeh/antennapod/fragment/QueueFragment.java
@@ -31,23 +31,6 @@ public class QueueFragment extends ItemlistFragment {
}
@Override
- public void onPause() {
- super.onPause();
- try {
- getActivity().unregisterReceiver(queueUpdate);
- } catch (IllegalArgumentException e) {
-
- }
- }
-
- @Override
- public void onResume() {
- super.onResume();
- getActivity().registerReceiver(queueUpdate,
- new IntentFilter(FeedManager.ACTION_QUEUE_UPDATE));
- }
-
- @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
@@ -73,15 +56,6 @@ public class QueueFragment extends ItemlistFragment {
return handled;
}
- private BroadcastReceiver queueUpdate = new BroadcastReceiver() {
-
- @Override
- public void onReceive(Context context, Intent intent) {
- fila.notifyDataSetChanged();
- }
-
- };
-
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
diff --git a/src/de/danoeh/antennapod/fragment/UnreadItemlistFragment.java b/src/de/danoeh/antennapod/fragment/UnreadItemlistFragment.java
index 8914f781a..c5638078f 100644
--- a/src/de/danoeh/antennapod/fragment/UnreadItemlistFragment.java
+++ b/src/de/danoeh/antennapod/fragment/UnreadItemlistFragment.java
@@ -21,37 +21,11 @@ public class UnreadItemlistFragment extends ItemlistFragment {
}
@Override
- public void onPause() {
- super.onPause();
- try {
- getActivity().unregisterReceiver(unreadItemsUpdate);
- } catch (IllegalArgumentException e) {
-
- }
- }
-
- @Override
- public void onResume() {
- super.onResume();
- getActivity().registerReceiver(unreadItemsUpdate,
- new IntentFilter(FeedManager.ACTION_UNREAD_ITEMS_UPDATE));
- }
-
- @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
- private BroadcastReceiver unreadItemsUpdate = new BroadcastReceiver() {
-
- @Override
- public void onReceive(Context context, Intent intent) {
- fila.notifyDataSetChanged();
- }
-
- };
-
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
diff --git a/src/de/danoeh/antennapod/service/DownloadService.java b/src/de/danoeh/antennapod/service/DownloadService.java
index afc5cc1ac..fbfa6d060 100644
--- a/src/de/danoeh/antennapod/service/DownloadService.java
+++ b/src/de/danoeh/antennapod/service/DownloadService.java
@@ -420,6 +420,12 @@ public class DownloadService extends Service {
reason, successful));
sendDownloadHandledIntent(downloadId, statusId, hasImage, imageId);
queryDownloads();
+ try {
+ Thread.sleep(100);
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
}
/** Delete files that aren't needed anymore */
diff --git a/src/de/danoeh/antennapod/storage/PodDBAdapter.java b/src/de/danoeh/antennapod/storage/PodDBAdapter.java
index 4c208f187..97f50d360 100644
--- a/src/de/danoeh/antennapod/storage/PodDBAdapter.java
+++ b/src/de/danoeh/antennapod/storage/PodDBAdapter.java
@@ -1,6 +1,7 @@
package de.danoeh.antennapod.storage;
import java.util.ArrayList;
+import java.util.List;
import de.danoeh.antennapod.AppConfig;
import de.danoeh.antennapod.asynctask.DownloadStatus;
@@ -397,7 +398,7 @@ public class PodDBAdapter {
return status.getId();
}
- public void setQueue(ArrayList<FeedItem> queue) {
+ public void setQueue(List<FeedItem> queue) {
ContentValues values = new ContentValues();
db.delete(TABLE_NAME_QUEUE, null, null);
for (int i = 0; i < queue.size(); i++) {
diff --git a/src/de/danoeh/antennapod/util/URLChecker.java b/src/de/danoeh/antennapod/util/URLChecker.java
index 94a9c276e..bb34feb99 100644
--- a/src/de/danoeh/antennapod/util/URLChecker.java
+++ b/src/de/danoeh/antennapod/util/URLChecker.java
@@ -21,7 +21,7 @@ public final class URLChecker {
* @param url The url which is going to be prepared
* @return The prepared url
* */
- public static String prepareURL(final String url) {
+ public static String prepareURL(String url) {
StringBuilder builder = new StringBuilder();
if (!url.startsWith("http")) {
@@ -29,7 +29,7 @@ public final class URLChecker {
if (AppConfig.DEBUG) Log.d(TAG, "Missing http; appending");
} else if (url.startsWith("https")) {
if (AppConfig.DEBUG) Log.d(TAG, "Replacing https with http");
- url.replaceFirst("https", "http");
+ url = url.replaceFirst("https", "http");
}
builder.append(url);