diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 7ec6d526b..50c70d77d 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -26,7 +26,7 @@
-
+
diff --git a/src/de/podfetcher/activity/AddFeedActivity.java b/src/de/podfetcher/activity/AddFeedActivity.java
index a0c1e36d8..e5d9c64a8 100644
--- a/src/de/podfetcher/activity/AddFeedActivity.java
+++ b/src/de/podfetcher/activity/AddFeedActivity.java
@@ -2,16 +2,45 @@ package de.podfetcher.activity;
import android.app.Activity;
import android.os.Bundle;
+import android.widget.Button;
+import android.widget.EditText;
+import android.view.View;
import de.podfetcher.R;
+import de.podfetcher.feed.FeedManager;
/** Activity for adding/editing a Feed */
public class AddFeedActivity extends Activity {
+ private EditText etxtFeedurl;
+ private Button butConfirm;
+ private FeedManager manager;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.addfeed);
+
+ manager = FeedManager.getInstance();
+ etxtFeedurl = (EditText) findViewById(R.id.etxtFeedurl);
+ butConfirm = (Button) findViewById(R.id.butConfirm);
+
+ butConfirm.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ addNewFeed();
+ finish();
+ }
+ });
+
+
+ }
+
+ private void addNewFeed() {
+ String url = etxtFeedurl.getText().toString();
+ manager.addFeed(this, url);
+
+
}
diff --git a/src/de/podfetcher/activity/FeedlistActivity.java b/src/de/podfetcher/activity/FeedlistActivity.java
index caaf88568..3bf8defb8 100644
--- a/src/de/podfetcher/activity/FeedlistActivity.java
+++ b/src/de/podfetcher/activity/FeedlistActivity.java
@@ -1,24 +1,55 @@
package de.podfetcher.activity;
import de.podfetcher.R;
+import de.podfetcher.feed.FeedManager;
+import de.podfetcher.gui.FeedlistAdapter;
+import de.podfetcher.service.FeedSyncService;
+import de.podfetcher.storage.DownloadRequester;
import greendroid.app.GDListActivity;
import android.os.Bundle;
import android.view.View;
import greendroid.widget.ActionBarItem.Type;
import greendroid.widget.ActionBarItem;
import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+
public class FeedlistActivity extends GDListActivity {
+ private FeedManager manager;
+ private FeedlistAdapter fla;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ manager = FeedManager.getInstance();
+ fla = new FeedlistAdapter(this, R.layout.feedlist_item, 0, manager.getFeeds());
+ setListAdapter(fla);
+
addActionBarItem(Type.Add, R.id.action_bar_add);
addActionBarItem(Type.Refresh, R.id.action_bar_refresh);
}
+ @Override
+ protected void onResume() {
+ super.onResume();
+ IntentFilter filter = new IntentFilter();
+ filter.addAction(FeedSyncService.ACTION_FEED_SYNC_COMPLETED);
+ filter.addAction(DownloadRequester.ACTION_IMAGE_DOWNLOAD_COMPLETED);
+
+ registerReceiver(contentUpdate, filter);
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ unregisterReceiver(contentUpdate);
+ }
+
@Override
public boolean onHandleActionBarItemClick(ActionBarItem item, int position) {
switch(item.getItemId()) {
@@ -29,4 +60,11 @@ public class FeedlistActivity extends GDListActivity {
return super.onHandleActionBarItemClick(item, position);
}
}
+
+ private BroadcastReceiver contentUpdate = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ fla.notifyDataSetChanged();
+ }
+ };
}
diff --git a/src/de/podfetcher/feed/FeedManager.java b/src/de/podfetcher/feed/FeedManager.java
index 8f92d99a0..2dae36938 100644
--- a/src/de/podfetcher/feed/FeedManager.java
+++ b/src/de/podfetcher/feed/FeedManager.java
@@ -181,6 +181,10 @@ public class FeedManager {
}
return items;
}
+
+ public ArrayList getFeeds() {
+ return feeds;
+ }
diff --git a/src/de/podfetcher/gui/FeedlistAdapter.java b/src/de/podfetcher/gui/FeedlistAdapter.java
index 2eefb5e86..6c4aec069 100644
--- a/src/de/podfetcher/gui/FeedlistAdapter.java
+++ b/src/de/podfetcher/gui/FeedlistAdapter.java
@@ -26,6 +26,8 @@ public class FeedlistAdapter extends ArrayAdapter {
this.resource = resource;
}
+
+
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LinearLayout feedlistView;
@@ -45,8 +47,9 @@ public class FeedlistAdapter extends ArrayAdapter {
ImageView imageView = (ImageView)feedlistView.findViewById(R.id.imgvFeedimage);
TextView txtvFeedname = (TextView)feedlistView.findViewById(R.id.txtvFeedname);
TextView txtvNewEpisodes = (TextView)feedlistView.findViewById(R.id.txtvNewEpisodes);
-
- imageView.setImageURI(Uri.fromFile(new File(feed.getFile_url()))); // TODO select default picture when no image downloaded
+ if(feed.getImage() != null) {
+ imageView.setImageURI(Uri.fromFile(new File(feed.getFile_url()))); // TODO select default picture when no image downloaded
+ }
txtvFeedname.setText(feed.getTitle());
// TODO find new Episodes txtvNewEpisodes.setText(feed)
return feedlistView;
diff --git a/src/de/podfetcher/service/DownloadService.java b/src/de/podfetcher/service/DownloadService.java
index aa7356dfa..34f992b74 100644
--- a/src/de/podfetcher/service/DownloadService.java
+++ b/src/de/podfetcher/service/DownloadService.java
@@ -6,6 +6,7 @@
package de.podfetcher.service;
+import java.io.File;
import de.podfetcher.feed.*;
import de.podfetcher.storage.DownloadRequester;
import android.app.Service;
@@ -15,6 +16,7 @@ import android.content.IntentFilter;
import android.os.IBinder;
import android.content.BroadcastReceiver;
import android.content.Context;
+import android.util.Log;
public class DownloadService extends Service {
@@ -25,6 +27,7 @@ public class DownloadService extends Service {
@Override
public void onCreate() {
+ Log.d(this.toString(), "Service started");
registerReceiver(receiver, createIntentFilter());
}
@@ -78,15 +81,14 @@ public class DownloadService extends Service {
requester.removeFeedByID(intent.getLongExtra(DownloadRequester.EXTRA_ITEM_ID, -1));
// Get Feed Information
Feed feed = manager.getFeed(intent.getLongExtra(DownloadRequester.EXTRA_ITEM_ID, -1));
- feed.setFile_url(requester.getFeedfilePath(context) + requester.getFeedfileName(feed.getId()));
+ feed.setFile_url((new File(requester.getFeedfilePath(context), requester.getFeedfileName(feed.getId()))).toString());
// Update Information in Database
manager.setFeed(context, feed);
// Download Feed Image if provided
if(feed.getImage() != null) {
requester.downloadImage(context, feed.getImage());
}
- // Notify FeedSyncService about the new Feed
- sendBroadcast(intent);
+ context.startService(intent);
}
@@ -95,7 +97,6 @@ public class DownloadService extends Service {
requester.removeImageByID(intent.getLongExtra(DownloadRequester.EXTRA_ITEM_ID, -1));
FeedImage image = manager.getFeedImage(intent.getLongExtra(DownloadRequester.EXTRA_ITEM_ID, -1));
image.setFile_url(requester.getImagefilePath(context) + requester.getImagefileName(image.getId()));
- sendBroadcast(intent);
}
}
diff --git a/src/de/podfetcher/service/FeedSyncService.java b/src/de/podfetcher/service/FeedSyncService.java
index 934e48ccc..c03e6ef69 100644
--- a/src/de/podfetcher/service/FeedSyncService.java
+++ b/src/de/podfetcher/service/FeedSyncService.java
@@ -19,6 +19,7 @@ import android.content.IntentFilter;
import android.content.BroadcastReceiver;
import android.os.IBinder;
import android.content.Context;
+import android.util.Log;
public class FeedSyncService extends Service {
@@ -31,6 +32,7 @@ public class FeedSyncService extends Service {
@Override
public void onCreate() {
+ Log.d(this.toString(), "Service started");
executor = new ScheduledThreadPoolExecutor(Runtime.getRuntime().availableProcessors() + 2);
manager = FeedManager.getInstance();
requester = DownloadRequester.getInstance();
@@ -44,6 +46,7 @@ public class FeedSyncService extends Service {
@Override
public void onDestroy() {
+ sendBroadcast(new Intent(ACTION_FEED_SYNC_COMPLETED));
unregisterReceiver(allFeedsDownloaded);
}
@@ -100,6 +103,7 @@ public class FeedSyncService extends Service {
FeedHandler handler = new FeedHandler();
feed = handler.parseFeed(feed);
+ Log.d(this.toString(), feed.getTitle() + " parsed");
// Add Feeditems to the database
for(FeedItem item : feed.getItems()) {
manager.addFeedItem(service, item);
diff --git a/src/de/podfetcher/storage/DownloadRequester.java b/src/de/podfetcher/storage/DownloadRequester.java
index 4aecf20db..66effe92f 100644
--- a/src/de/podfetcher/storage/DownloadRequester.java
+++ b/src/de/podfetcher/storage/DownloadRequester.java
@@ -6,6 +6,7 @@ import java.io.File;
import de.podfetcher.feed.Feed;
import de.podfetcher.feed.FeedImage;
import de.podfetcher.feed.FeedMedia;
+import de.podfetcher.service.DownloadService;
import android.app.DownloadManager;
import android.content.Context;
@@ -22,9 +23,9 @@ public class DownloadRequester {
public static String ACTION_IMAGE_DOWNLOAD_COMPLETED = "action.de.podfetcher.storage.image_download_completed";
private static boolean STORE_ON_SD = true;
- public static String IMAGE_DOWNLOADPATH = "images";
- public static String FEED_DOWNLOADPATH = "cache";
- public static String MEDIA_DOWNLOADPATH = "media";
+ public static String IMAGE_DOWNLOADPATH = "images/";
+ public static String FEED_DOWNLOADPATH = "cache/";
+ public static String MEDIA_DOWNLOADPATH = "media/";
private static DownloadRequester downloader;
@@ -56,6 +57,7 @@ public class DownloadRequester {
// TODO Set Allowed Network Types
DownloadManager manager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
Intent i = new Intent(action);
+ context.startService(new Intent(context, DownloadService.class));
i.putExtra(EXTRA_DOWNLOAD_ID, manager.enqueue(request));
i.putExtra(EXTRA_ITEM_ID, id);
type.add(i);
@@ -139,7 +141,7 @@ public class DownloadRequester {
}
public String getFeedfilePath(Context context) {
- return context.getExternalFilesDir(FEED_DOWNLOADPATH).toString();
+ return context.getExternalFilesDir(FEED_DOWNLOADPATH).toString() + "/";
}
public String getFeedfileName(long id) {
@@ -147,7 +149,7 @@ public class DownloadRequester {
}
public String getImagefilePath(Context context) {
- return context.getExternalFilesDir(IMAGE_DOWNLOADPATH).toString();
+ return context.getExternalFilesDir(IMAGE_DOWNLOADPATH).toString() + "/";
}
public String getImagefileName(long id) {