Added context menu to itemlist
This commit is contained in:
parent
7113656a0d
commit
1d5d72eb88
@ -62,7 +62,8 @@ public class ItemviewActivity extends SherlockFragmentActivity {
|
|||||||
@Override
|
@Override
|
||||||
public void onStop() {
|
public void onStop() {
|
||||||
super.onStop();
|
super.onStop();
|
||||||
if (AppConfig.DEBUG) Log.d(TAG, "Stopping Activity");
|
if (AppConfig.DEBUG)
|
||||||
|
Log.d(TAG, "Stopping Activity");
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Extracts FeedItem object the activity is supposed to display */
|
/** Extracts FeedItem object the activity is supposed to display */
|
||||||
@ -76,8 +77,10 @@ public class ItemviewActivity extends SherlockFragmentActivity {
|
|||||||
}
|
}
|
||||||
Feed feed = manager.getFeed(feedId);
|
Feed feed = manager.getFeed(feedId);
|
||||||
item = manager.getFeedItem(itemId, feed);
|
item = manager.getFeedItem(itemId, feed);
|
||||||
if (AppConfig.DEBUG) Log.d(TAG, "Title of item is " + item.getTitle());
|
if (AppConfig.DEBUG)
|
||||||
if (AppConfig.DEBUG) Log.d(TAG, "Title of feed is " + item.getFeed().getTitle());
|
Log.d(TAG, "Title of item is " + item.getTitle());
|
||||||
|
if (AppConfig.DEBUG)
|
||||||
|
Log.d(TAG, "Title of feed is " + item.getFeed().getTitle());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void populateUI() {
|
private void populateUI() {
|
||||||
@ -95,21 +98,24 @@ public class ItemviewActivity extends SherlockFragmentActivity {
|
|||||||
FragmentManager fragmentManager = getSupportFragmentManager();
|
FragmentManager fragmentManager = getSupportFragmentManager();
|
||||||
FragmentTransaction fragmentTransaction = fragmentManager
|
FragmentTransaction fragmentTransaction = fragmentManager
|
||||||
.beginTransaction();
|
.beginTransaction();
|
||||||
ItemDescriptionFragment fragment = ItemDescriptionFragment.newInstance(
|
ItemDescriptionFragment fragment = ItemDescriptionFragment
|
||||||
item);
|
.newInstance(item);
|
||||||
fragmentTransaction.replace(R.id.description_fragment, fragment);
|
fragmentTransaction.replace(R.id.description_fragment, fragment);
|
||||||
fragmentTransaction.commit();
|
fragmentTransaction.commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
return FeedItemMenuHandler.onCreateMenu(new MenuInflater(this), menu);
|
MenuInflater inflater = getSupportMenuInflater();
|
||||||
|
inflater.inflate(R.menu.feeditem, menu);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onOptionsItemSelected(MenuItem menuItem) {
|
public boolean onOptionsItemSelected(MenuItem menuItem) {
|
||||||
try {
|
try {
|
||||||
if (!FeedItemMenuHandler.onMenuItemClicked(this, menuItem, item)) {
|
if (!FeedItemMenuHandler.onMenuItemClicked(this,
|
||||||
|
menuItem.getItemId(), item)) {
|
||||||
switch (menuItem.getItemId()) {
|
switch (menuItem.getItemId()) {
|
||||||
case android.R.id.home:
|
case android.R.id.home:
|
||||||
finish();
|
finish();
|
||||||
@ -118,15 +124,23 @@ public class ItemviewActivity extends SherlockFragmentActivity {
|
|||||||
}
|
}
|
||||||
} catch (DownloadRequestException e) {
|
} catch (DownloadRequestException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
DownloadRequestErrorDialogCreator.newRequestErrorDialog(this, e.getMessage());
|
DownloadRequestErrorDialogCreator.newRequestErrorDialog(this,
|
||||||
|
e.getMessage());
|
||||||
}
|
}
|
||||||
invalidateOptionsMenu();
|
invalidateOptionsMenu();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onPrepareOptionsMenu(Menu menu) {
|
public boolean onPrepareOptionsMenu(final Menu menu) {
|
||||||
return FeedItemMenuHandler.onPrepareMenu(menu, item);
|
return FeedItemMenuHandler.onPrepareMenu(
|
||||||
|
new FeedItemMenuHandler.MenuInterface() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setItemVisibility(int id, boolean visible) {
|
||||||
|
menu.findItem(id).setVisible(visible);
|
||||||
|
}
|
||||||
|
}, item);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -291,7 +291,7 @@ public abstract class MediaplayerActivity extends SherlockFragmentActivity
|
|||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
try {
|
try {
|
||||||
return FeedItemMenuHandler.onMenuItemClicked(this, item,
|
return FeedItemMenuHandler.onMenuItemClicked(this, item.getItemId(),
|
||||||
controller.getMedia().getItem());
|
controller.getMedia().getItem());
|
||||||
} catch (DownloadRequestException e) {
|
} catch (DownloadRequestException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
@ -3,13 +3,19 @@ package de.danoeh.antennapod.adapter;
|
|||||||
import java.text.DateFormat;
|
import java.text.DateFormat;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.TypedArray;
|
import android.content.res.TypedArray;
|
||||||
import android.graphics.Typeface;
|
import android.graphics.Typeface;
|
||||||
import android.text.format.DateUtils;
|
import android.text.format.DateUtils;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.view.ContextMenu;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.MenuInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.ContextMenu.ContextMenuInfo;
|
||||||
import android.view.View.OnClickListener;
|
import android.view.View.OnClickListener;
|
||||||
|
import android.view.View.OnCreateContextMenuListener;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.Adapter;
|
import android.widget.Adapter;
|
||||||
import android.widget.ArrayAdapter;
|
import android.widget.ArrayAdapter;
|
||||||
@ -27,7 +33,7 @@ import de.danoeh.antennapod.util.EpisodeFilter;
|
|||||||
import de.danoeh.antennapod.util.ThemeUtils;
|
import de.danoeh.antennapod.util.ThemeUtils;
|
||||||
|
|
||||||
public class FeedItemlistAdapter extends ArrayAdapter<FeedItem> {
|
public class FeedItemlistAdapter extends ArrayAdapter<FeedItem> {
|
||||||
private OnClickListener onButActionClicked;
|
private FeedItemlistAdapter.Callback callback;
|
||||||
private boolean showFeedtitle;
|
private boolean showFeedtitle;
|
||||||
private int selectedItemIndex;
|
private int selectedItemIndex;
|
||||||
private List<FeedItem> objects;
|
private List<FeedItem> objects;
|
||||||
@ -35,17 +41,17 @@ public class FeedItemlistAdapter extends ArrayAdapter<FeedItem> {
|
|||||||
public static final int SELECTION_NONE = -1;
|
public static final int SELECTION_NONE = -1;
|
||||||
|
|
||||||
public FeedItemlistAdapter(Context context, int textViewResourceId,
|
public FeedItemlistAdapter(Context context, int textViewResourceId,
|
||||||
List<FeedItem> objects, OnClickListener onButActionClicked,
|
List<FeedItem> objects, FeedItemlistAdapter.Callback callback,
|
||||||
boolean showFeedtitle) {
|
boolean showFeedtitle) {
|
||||||
super(context, textViewResourceId, objects);
|
super(context, textViewResourceId, objects);
|
||||||
this.objects = objects;
|
this.objects = objects;
|
||||||
this.onButActionClicked = onButActionClicked;
|
this.callback = callback;
|
||||||
this.showFeedtitle = showFeedtitle;
|
this.showFeedtitle = showFeedtitle;
|
||||||
this.selectedItemIndex = SELECTION_NONE;
|
this.selectedItemIndex = SELECTION_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public View getView(int position, View convertView, ViewGroup parent) {
|
public View getView(final int position, View convertView, ViewGroup parent) {
|
||||||
Holder holder;
|
Holder holder;
|
||||||
FeedItem item = getItem(position);
|
FeedItem item = getItem(position);
|
||||||
|
|
||||||
@ -178,7 +184,14 @@ public class FeedItemlistAdapter extends ArrayAdapter<FeedItem> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
holder.butAction.setFocusable(false);
|
holder.butAction.setFocusable(false);
|
||||||
holder.butAction.setOnClickListener(onButActionClicked);
|
holder.butAction.setOnClickListener(new OnClickListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
callback.onActionButtonPressed(position);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
convertView.setVisibility(View.GONE);
|
convertView.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
@ -226,4 +239,9 @@ public class FeedItemlistAdapter extends ArrayAdapter<FeedItem> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface Callback {
|
||||||
|
/** Is called when the action button of a list item has been pressed. */
|
||||||
|
abstract void onActionButtonPressed(int position);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -8,10 +8,16 @@ import android.content.Intent;
|
|||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import android.view.ContextMenu;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.MenuInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.ContextMenu.ContextMenuInfo;
|
||||||
import android.view.View.OnClickListener;
|
import android.view.View.OnClickListener;
|
||||||
|
import android.view.View.OnCreateContextMenuListener;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.AdapterView;
|
||||||
|
import android.widget.AdapterView.OnItemLongClickListener;
|
||||||
import android.widget.ListView;
|
import android.widget.ListView;
|
||||||
|
|
||||||
import com.actionbarsherlock.app.SherlockListFragment;
|
import com.actionbarsherlock.app.SherlockListFragment;
|
||||||
@ -33,8 +39,7 @@ import de.danoeh.antennapod.storage.DownloadRequester;
|
|||||||
import de.danoeh.antennapod.util.menuhandler.FeedItemMenuHandler;
|
import de.danoeh.antennapod.util.menuhandler.FeedItemMenuHandler;
|
||||||
|
|
||||||
/** Displays a list of FeedItems. */
|
/** Displays a list of FeedItems. */
|
||||||
public class ItemlistFragment extends SherlockListFragment implements
|
public class ItemlistFragment extends SherlockListFragment {
|
||||||
ActionMode.Callback {
|
|
||||||
|
|
||||||
private static final String TAG = "ItemlistFragment";
|
private static final String TAG = "ItemlistFragment";
|
||||||
public static final String EXTRA_SELECTED_FEEDITEM = "extra.de.danoeh.antennapod.activity.selected_feeditem";
|
public static final String EXTRA_SELECTED_FEEDITEM = "extra.de.danoeh.antennapod.activity.selected_feeditem";
|
||||||
@ -51,8 +56,8 @@ public class ItemlistFragment extends SherlockListFragment implements
|
|||||||
*/
|
*/
|
||||||
protected Feed feed;
|
protected Feed feed;
|
||||||
|
|
||||||
protected FeedItem selectedItem;
|
protected static final int NO_SELECTION = -1;
|
||||||
protected ActionMode mActionMode;
|
protected int selectedPosition = NO_SELECTION;
|
||||||
|
|
||||||
/** Argument for FeeditemlistAdapter */
|
/** Argument for FeeditemlistAdapter */
|
||||||
protected boolean showFeedtitle;
|
protected boolean showFeedtitle;
|
||||||
@ -101,16 +106,13 @@ public class ItemlistFragment extends SherlockListFragment implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
fila = new FeedItemlistAdapter(getActivity(), 0, items,
|
fila = new FeedItemlistAdapter(getActivity(), 0, items,
|
||||||
onButActionClicked, showFeedtitle);
|
adapterCallback, showFeedtitle);
|
||||||
setListAdapter(fila);
|
setListAdapter(fila);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPause() {
|
public void onPause() {
|
||||||
super.onPause();
|
super.onPause();
|
||||||
if (mActionMode != null) {
|
|
||||||
mActionMode.finish();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -184,26 +186,14 @@ public class ItemlistFragment extends SherlockListFragment implements
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private final OnClickListener onButActionClicked = new OnClickListener() {
|
private FeedItemlistAdapter.Callback adapterCallback = new FeedItemlistAdapter.Callback() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onActionButtonPressed(int position) {
|
||||||
int index = getListView().getPositionForView(v);
|
if (AppConfig.DEBUG)
|
||||||
if (index != ListView.INVALID_POSITION) {
|
Log.d(TAG, "adapterCallback; position = " + position);
|
||||||
FeedItem newSelectedItem = fila.getItem(index);
|
selectedPosition = position;
|
||||||
if (newSelectedItem != selectedItem) {
|
getListView().showContextMenu();
|
||||||
if (mActionMode != null) {
|
|
||||||
mActionMode.finish();
|
|
||||||
}
|
|
||||||
|
|
||||||
selectedItem = newSelectedItem;
|
|
||||||
mActionMode = getSherlockActivity().startActionMode(
|
|
||||||
ItemlistFragment.this);
|
|
||||||
fila.setSelectedItemIndex(index);
|
|
||||||
} else {
|
|
||||||
mActionMode.finish();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -211,41 +201,56 @@ public class ItemlistFragment extends SherlockListFragment implements
|
|||||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||||
this.getListView().setItemsCanFocus(true);
|
this.getListView().setItemsCanFocus(true);
|
||||||
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
|
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
|
||||||
|
registerForContextMenu(getListView());
|
||||||
|
getListView().setOnItemLongClickListener(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
|
public void onCreateContextMenu(final ContextMenu menu, View v,
|
||||||
return FeedItemMenuHandler.onPrepareMenu(menu, selectedItem);
|
ContextMenuInfo menuInfo) {
|
||||||
|
super.onCreateContextMenu(menu, v, menuInfo);
|
||||||
|
if (selectedPosition != NO_SELECTION) {
|
||||||
|
new MenuInflater(ItemlistFragment.this.getActivity()).inflate(
|
||||||
|
R.menu.feeditem, menu);
|
||||||
|
FeedItem selection = fila.getItem(selectedPosition);
|
||||||
|
if (selection != null) {
|
||||||
|
menu.setHeaderTitle(selection.getTitle());
|
||||||
|
FeedItemMenuHandler.onPrepareMenu(
|
||||||
|
new FeedItemMenuHandler.MenuInterface() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setItemVisibility(int id,
|
||||||
|
boolean visible) {
|
||||||
|
menu.findItem(id).setVisible(visible);
|
||||||
|
}
|
||||||
|
}, selection);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDestroyActionMode(ActionMode mode) {
|
public boolean onContextItemSelected(android.view.MenuItem item) {
|
||||||
mActionMode = null;
|
|
||||||
selectedItem = null;
|
|
||||||
fila.setSelectedItemIndex(FeedItemlistAdapter.SELECTION_NONE);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
|
|
||||||
return FeedItemMenuHandler.onCreateMenu(mode.getMenuInflater(), menu);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
|
|
||||||
boolean handled = false;
|
boolean handled = false;
|
||||||
try {
|
|
||||||
handled = FeedItemMenuHandler.onMenuItemClicked(
|
if (selectedPosition != NO_SELECTION) {
|
||||||
getSherlockActivity(), item, selectedItem);
|
FeedItem selectedItem = fila.getItem(selectedPosition);
|
||||||
} catch (DownloadRequestException e) {
|
|
||||||
e.printStackTrace();
|
if (selectedItem != null) {
|
||||||
DownloadRequestErrorDialogCreator.newRequestErrorDialog(
|
try {
|
||||||
getActivity(), e.getMessage());
|
handled = FeedItemMenuHandler.onMenuItemClicked(
|
||||||
|
getSherlockActivity(), item.getItemId(),
|
||||||
|
selectedItem);
|
||||||
|
} catch (DownloadRequestException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
DownloadRequestErrorDialogCreator.newRequestErrorDialog(
|
||||||
|
getActivity(), e.getMessage());
|
||||||
|
}
|
||||||
|
if (handled) {
|
||||||
|
fila.notifyDataSetChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (handled) {
|
selectedPosition = NO_SELECTION;
|
||||||
fila.notifyDataSetChanged();
|
|
||||||
}
|
|
||||||
mode.finish();
|
|
||||||
return handled;
|
return handled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,42 +17,12 @@ public class QueueFragment extends ItemlistFragment {
|
|||||||
super(FeedManager.getInstance().getQueue(), true);
|
super(FeedManager.getInstance().getQueue(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
|
|
||||||
super.onCreateActionMode(mode, menu);
|
|
||||||
menu.add(Menu.NONE, R.id.move_up_item, Menu.NONE,
|
|
||||||
R.string.move_up_label);
|
|
||||||
menu.add(Menu.NONE, R.id.move_down_item, Menu.NONE,
|
|
||||||
R.string.move_down_label);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setHasOptionsMenu(true);
|
setHasOptionsMenu(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
|
|
||||||
boolean handled = false;
|
|
||||||
switch (item.getItemId()) {
|
|
||||||
case R.id.move_up_item:
|
|
||||||
manager.moveQueueItem(getActivity(), selectedItem, -1);
|
|
||||||
handled = true;
|
|
||||||
break;
|
|
||||||
case R.id.move_down_item:
|
|
||||||
manager.moveQueueItem(getActivity(), selectedItem, 1);
|
|
||||||
handled = true;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
handled = super.onActionItemClicked(mode, item);
|
|
||||||
}
|
|
||||||
fila.notifyDataSetChanged();
|
|
||||||
mode.finish();
|
|
||||||
return handled;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
||||||
super.onCreateOptionsMenu(menu, inflater);
|
super.onCreateOptionsMenu(menu, inflater);
|
||||||
|
@ -3,10 +3,9 @@ package de.danoeh.antennapod.util.menuhandler;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
|
import android.view.Menu;
|
||||||
import com.actionbarsherlock.view.Menu;
|
import android.view.MenuInflater;
|
||||||
import com.actionbarsherlock.view.MenuInflater;
|
import android.view.MenuItem;
|
||||||
import com.actionbarsherlock.view.MenuItem;
|
|
||||||
|
|
||||||
import de.danoeh.antennapod.AppConfig;
|
import de.danoeh.antennapod.AppConfig;
|
||||||
import de.danoeh.antennapod.R;
|
import de.danoeh.antennapod.R;
|
||||||
@ -24,7 +23,20 @@ public class FeedItemMenuHandler {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean onPrepareMenu(Menu menu, FeedItem selectedItem) {
|
/**
|
||||||
|
* Used by the MenuHandler to access different types of menus through one
|
||||||
|
* interface (for example android.view.Menu and com.actionbarsherlock.Menu)
|
||||||
|
*/
|
||||||
|
public interface MenuInterface {
|
||||||
|
/**
|
||||||
|
* Implementations of this method should call findItem(id) on their
|
||||||
|
* menu-object and call setVisibility(visibility) on the returned
|
||||||
|
* MenuItem object.
|
||||||
|
*/
|
||||||
|
abstract void setItemVisibility(int id, boolean visible);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean onPrepareMenu(MenuInterface mi, FeedItem selectedItem) {
|
||||||
FeedManager manager = FeedManager.getInstance();
|
FeedManager manager = FeedManager.getInstance();
|
||||||
DownloadRequester requester = DownloadRequester.getInstance();
|
DownloadRequester requester = DownloadRequester.getInstance();
|
||||||
boolean hasMedia = selectedItem.getMedia() != null;
|
boolean hasMedia = selectedItem.getMedia() != null;
|
||||||
@ -35,45 +47,44 @@ public class FeedItemMenuHandler {
|
|||||||
&& (!downloading);
|
&& (!downloading);
|
||||||
FeedItem.State state = selectedItem.getState();
|
FeedItem.State state = selectedItem.getState();
|
||||||
|
|
||||||
menu.findItem(R.id.play_item).setVisible(downloaded);
|
mi.setItemVisibility(R.id.play_item, downloaded);
|
||||||
menu.findItem(R.id.remove_item).setVisible(downloaded);
|
mi.setItemVisibility(R.id.remove_item, downloaded);
|
||||||
menu.findItem(R.id.download_item).setVisible(notLoadedAndNotLoading);
|
mi.setItemVisibility(R.id.download_item, notLoadedAndNotLoading);
|
||||||
menu.findItem(R.id.stream_item).setVisible(
|
mi.setItemVisibility(R.id.stream_item, notLoadedAndNotLoading
|
||||||
notLoadedAndNotLoading | downloading);
|
| downloading);
|
||||||
menu.findItem(R.id.cancel_download_item).setVisible(downloading);
|
mi.setItemVisibility(R.id.cancel_download_item, downloading);
|
||||||
|
|
||||||
boolean isInQueue = manager.isInQueue(selectedItem);
|
boolean isInQueue = manager.isInQueue(selectedItem);
|
||||||
|
|
||||||
menu.findItem(R.id.remove_from_queue_item).setVisible(isInQueue);
|
mi.setItemVisibility(R.id.remove_from_queue_item, isInQueue);
|
||||||
menu.findItem(R.id.add_to_queue_item).setVisible(
|
mi.setItemVisibility(R.id.add_to_queue_item,
|
||||||
!isInQueue && selectedItem.getMedia() != null);
|
!isInQueue && selectedItem.getMedia() != null);
|
||||||
|
|
||||||
menu.findItem(R.id.share_link_item).setVisible(
|
mi.setItemVisibility(R.id.share_link_item,
|
||||||
selectedItem.getLink() != null);
|
selectedItem.getLink() != null);
|
||||||
|
|
||||||
menu.findItem(R.id.mark_unread_item).setVisible(
|
mi.setItemVisibility(R.id.mark_unread_item,
|
||||||
state == FeedItem.State.IN_PROGRESS
|
state == FeedItem.State.IN_PROGRESS
|
||||||
|| state == FeedItem.State.READ);
|
|| state == FeedItem.State.READ);
|
||||||
menu.findItem(R.id.mark_read_item).setVisible(
|
mi.setItemVisibility(R.id.mark_read_item, state == FeedItem.State.NEW
|
||||||
state == FeedItem.State.NEW
|
|| state == FeedItem.State.IN_PROGRESS);
|
||||||
|| state == FeedItem.State.IN_PROGRESS);
|
|
||||||
|
|
||||||
if (selectedItem.getLink() != null) {
|
if (selectedItem.getLink() != null) {
|
||||||
menu.findItem(R.id.visit_website_item).setVisible(true);
|
mi.setItemVisibility(R.id.visit_website_item, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (selectedItem.getPaymentLink() != null) {
|
if (selectedItem.getPaymentLink() != null) {
|
||||||
menu.findItem(R.id.support_item).setVisible(true);
|
mi.setItemVisibility(R.id.support_item, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean onMenuItemClicked(Context context, MenuItem item,
|
public static boolean onMenuItemClicked(Context context, int menuItemId,
|
||||||
FeedItem selectedItem) throws DownloadRequestException {
|
FeedItem selectedItem) throws DownloadRequestException {
|
||||||
DownloadRequester requester = DownloadRequester.getInstance();
|
DownloadRequester requester = DownloadRequester.getInstance();
|
||||||
FeedManager manager = FeedManager.getInstance();
|
FeedManager manager = FeedManager.getInstance();
|
||||||
switch (item.getItemId()) {
|
switch (menuItemId) {
|
||||||
case R.id.download_item:
|
case R.id.download_item:
|
||||||
manager.downloadFeedItem(context, selectedItem);
|
manager.downloadFeedItem(context, selectedItem);
|
||||||
break;
|
break;
|
||||||
@ -122,9 +133,4 @@ public class FeedItemMenuHandler {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean onCreateMenu(MenuInflater inflater, Menu menu) {
|
|
||||||
inflater.inflate(R.menu.feeditem, menu);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user