summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/de/podfetcher/activity/FeedItemlistActivity.java4
-rw-r--r--src/de/podfetcher/activity/ItemviewActivity.java14
-rw-r--r--src/de/podfetcher/adapter/FeedItemlistAdapter.java12
-rw-r--r--src/de/podfetcher/feed/FeedManager.java18
-rw-r--r--src/de/podfetcher/fragment/FeedItemlistFragment.java115
5 files changed, 136 insertions, 27 deletions
diff --git a/src/de/podfetcher/activity/FeedItemlistActivity.java b/src/de/podfetcher/activity/FeedItemlistActivity.java
index 172259aad..517b9799a 100644
--- a/src/de/podfetcher/activity/FeedItemlistActivity.java
+++ b/src/de/podfetcher/activity/FeedItemlistActivity.java
@@ -44,8 +44,8 @@ public class FeedItemlistActivity extends SherlockFragmentActivity {
fT.commit();
}
-
+ /*
public void onButActionClicked(View v) {
Log.d(TAG, "Button clicked");
- }
+ }*/
}
diff --git a/src/de/podfetcher/activity/ItemviewActivity.java b/src/de/podfetcher/activity/ItemviewActivity.java
index 17d00f237..a3fe92f35 100644
--- a/src/de/podfetcher/activity/ItemviewActivity.java
+++ b/src/de/podfetcher/activity/ItemviewActivity.java
@@ -62,19 +62,7 @@ public class ItemviewActivity extends SherlockActivity {
butPlay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- // Start playback Service
- Intent launchIntent = new Intent(v.getContext(),
- PlaybackService.class);
- launchIntent.putExtra(PlaybackService.EXTRA_MEDIA_ID, item
- .getMedia().getId());
- launchIntent.putExtra(PlaybackService.EXTRA_FEED_ID, item
- .getFeed().getId());
- v.getContext().startService(launchIntent);
-
- // Launch Mediaplayer
- Intent playerIntent = new Intent(v.getContext(),
- MediaplayerActivity.class);
- v.getContext().startActivity(playerIntent);
+ manager.playMedia(v.getContext(), item.getMedia());
}
});
diff --git a/src/de/podfetcher/adapter/FeedItemlistAdapter.java b/src/de/podfetcher/adapter/FeedItemlistAdapter.java
index d888b72a9..e28a77d1c 100644
--- a/src/de/podfetcher/adapter/FeedItemlistAdapter.java
+++ b/src/de/podfetcher/adapter/FeedItemlistAdapter.java
@@ -6,18 +6,21 @@ import de.podfetcher.feed.FeedItem;
import de.podfetcher.util.Converter;
import de.podfetcher.R;
import android.widget.ArrayAdapter;
+import android.widget.Button;
import android.widget.TextView;
import android.view.LayoutInflater;
import android.view.View;
+import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.content.Context;
public class FeedItemlistAdapter extends ArrayAdapter<FeedItem> {
-
+ private OnClickListener onButActionClicked;
public FeedItemlistAdapter(Context context,
- int textViewResourceId, List<FeedItem> objects) {
+ int textViewResourceId, List<FeedItem> objects, OnClickListener onButActionClicked) {
super(context, textViewResourceId, objects);
+ this.onButActionClicked = onButActionClicked;
}
@Override
@@ -31,7 +34,8 @@ public class FeedItemlistAdapter extends ArrayAdapter<FeedItem> {
convertView = inflater.inflate(R.layout.feeditemlist_item, null);
holder.title = (TextView) convertView.findViewById(R.id.txtvItemname);
holder.size = (TextView) convertView.findViewById(R.id.txtvItemsize);
-
+ holder.butAction = (Button) convertView.findViewById(R.id.butAction);
+
convertView.setTag(holder);
} else {
holder = (Holder) convertView.getTag();
@@ -39,6 +43,7 @@ public class FeedItemlistAdapter extends ArrayAdapter<FeedItem> {
holder.title.setText(item.getTitle());
holder.size.setText(Converter.byteToString(item.getMedia().getSize()));
+ holder.butAction.setOnClickListener(onButActionClicked);
return convertView;
}
@@ -46,5 +51,6 @@ public class FeedItemlistAdapter extends ArrayAdapter<FeedItem> {
static class Holder {
TextView title;
TextView size;
+ Button butAction;
}
}
diff --git a/src/de/podfetcher/feed/FeedManager.java b/src/de/podfetcher/feed/FeedManager.java
index 4362727c8..716aa36f7 100644
--- a/src/de/podfetcher/feed/FeedManager.java
+++ b/src/de/podfetcher/feed/FeedManager.java
@@ -4,8 +4,11 @@ import java.io.File;
import java.util.ArrayList;
import java.util.Date;
+import de.podfetcher.activity.MediaplayerActivity;
+import de.podfetcher.service.PlaybackService;
import de.podfetcher.storage.*;
import android.content.Context;
+import android.content.Intent;
import android.database.Cursor;
import android.util.Log;
@@ -36,6 +39,21 @@ public class FeedManager {
}
return singleton;
}
+
+ /** Play FeedMedia and start the playback service + launch Mediaplayer Activity. */
+ public void playMedia(Context context, FeedMedia media) {
+ // Start playback Service
+ Intent launchIntent = new Intent(context,
+ PlaybackService.class);
+ launchIntent.putExtra(PlaybackService.EXTRA_MEDIA_ID, media.getId());
+ launchIntent.putExtra(PlaybackService.EXTRA_FEED_ID, media.getItem().getFeed().getId());
+ context.startService(launchIntent);
+
+ // Launch Mediaplayer
+ Intent playerIntent = new Intent(context,
+ MediaplayerActivity.class);
+ context.startActivity(playerIntent);
+ }
/** Remove media item that has been downloaded. */
public boolean deleteFeedMedia(Context context, FeedMedia media) {
diff --git a/src/de/podfetcher/fragment/FeedItemlistFragment.java b/src/de/podfetcher/fragment/FeedItemlistFragment.java
index 3081a95c5..caafdccaa 100644
--- a/src/de/podfetcher/fragment/FeedItemlistFragment.java
+++ b/src/de/podfetcher/fragment/FeedItemlistFragment.java
@@ -6,51 +6,148 @@ import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
+import android.view.View.OnClickListener;
import android.widget.ListView;
import com.actionbarsherlock.app.SherlockListFragment;
+import com.actionbarsherlock.view.ActionMode;
+import com.actionbarsherlock.view.Menu;
+import com.actionbarsherlock.view.MenuInflater;
+import com.actionbarsherlock.view.MenuItem;
+import de.podfetcher.R;
import de.podfetcher.activity.ItemviewActivity;
import de.podfetcher.adapter.FeedItemlistAdapter;
import de.podfetcher.feed.FeedItem;
import de.podfetcher.feed.FeedManager;
+import de.podfetcher.storage.DownloadRequester;
public class FeedItemlistFragment extends SherlockListFragment {
private static final String TAG = "FeedItemlistFragment";
public static final String EXTRA_SELECTED_FEEDITEM = "extra.de.podfetcher.activity.selected_feeditem";
-
+
private FeedItemlistAdapter fila;
private FeedManager manager;
+ private DownloadRequester requester;
/** The feed which the activity displays */
private ArrayList<FeedItem> items;
-
+
+ private FeedItem selectedItem;
+ private ActionMode mActionMode;
+
public FeedItemlistFragment(ArrayList<FeedItem> items) {
super();
this.items = items;
manager = FeedManager.getInstance();
+ requester = DownloadRequester.getInstance();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- fila = new FeedItemlistAdapter(getActivity(), 0, items);
+ fila = new FeedItemlistAdapter(getActivity(), 0, items,
+ onButActionClicked);
setListAdapter(fila);
+ }
-
+ @Override
+ public void onPause() {
+ super.onPause();
+ if (mActionMode != null) {
+ mActionMode.finish();
+ }
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
FeedItem selection = fila.getItem(position);
Intent showItem = new Intent(getActivity(), ItemviewActivity.class);
- showItem.putExtra(FeedlistFragment.EXTRA_SELECTED_FEED, selection.getFeed().getId());
+ showItem.putExtra(FeedlistFragment.EXTRA_SELECTED_FEED, selection
+ .getFeed().getId());
showItem.putExtra(EXTRA_SELECTED_FEEDITEM, selection.getId());
startActivity(showItem);
}
-
- public void onButActionClicked(View v) {
- Log.d(TAG, "Button clicked");
- }
+
+ private final OnClickListener onButActionClicked = new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ int index = getListView().getPositionForView(v);
+ if (index != ListView.INVALID_POSITION) {
+ FeedItem newSelectedItem = items.get(index);
+ if (newSelectedItem != selectedItem) {
+ if (mActionMode != null) {
+ mActionMode.finish();
+ }
+
+ selectedItem = newSelectedItem;
+ mActionMode = getSherlockActivity().startActionMode(
+ mActionModeCallback);
+ } else {
+ mActionMode.finish();
+ }
+
+ }
+ }
+ };
+
+ private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {
+
+ @Override
+ public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
+ return false;
+ }
+
+ @Override
+ public void onDestroyActionMode(ActionMode mode) {
+ mActionMode = null;
+ selectedItem = null;
+ }
+
+ @Override
+ public boolean onCreateActionMode(ActionMode mode, Menu menu) {
+ MenuInflater inflater = mode.getMenuInflater();
+ inflater.inflate(R.menu.feeditemlist, menu);
+ mode.setTitle(selectedItem.getTitle());
+
+ if (selectedItem.getMedia().isDownloaded()) {
+ menu.findItem(R.id.play_item).setVisible(true);
+ menu.findItem(R.id.remove_item).setVisible(true);
+ } else if (selectedItem.getMedia().getFile_url() == null) {
+ menu.findItem(R.id.download_item).setVisible(true);
+ } else {
+ menu.findItem(R.id.cancel_download_item).setVisible(true);
+ }
+
+ return true;
+
+ }
+
+ @Override
+ public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
+ switch (item.getItemId()) {
+ case R.id.download_item:
+ requester.downloadMedia(getSherlockActivity(),
+ selectedItem.getMedia());
+ break;
+ case R.id.play_item:
+ manager.playMedia(getSherlockActivity(),
+ selectedItem.getMedia());
+ break;
+ case R.id.remove_item:
+ manager.deleteFeedMedia(getSherlockActivity(),
+ selectedItem.getMedia());
+ break;
+ case R.id.cancel_download_item:
+ requester.cancelDownload(getSherlockActivity(), selectedItem
+ .getMedia().getDownloadId());
+ break;
+
+ }
+ mode.finish();
+ return true;
+ }
+ };
+
}