Add an expand menu action
This commit is contained in:
parent
5fda18dc67
commit
2dcb8eb0e4
@ -7,6 +7,7 @@
|
||||
|
||||
<string name="enqueue">Enqueue</string>
|
||||
<string name="play">Play</string>
|
||||
<string name="expand">Expand</string>
|
||||
<string name="settings">Preferences</string>
|
||||
<string name="library">Media Library</string>
|
||||
<string name="quit">Stop and Exit</string>
|
||||
|
@ -63,17 +63,17 @@ public class MediaAdapter extends BaseAdapter implements Filterable {
|
||||
mExpanderListener = expanderListener;
|
||||
}
|
||||
|
||||
public final boolean hasExpanders()
|
||||
{
|
||||
return mExpanderListener != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasStableIds()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public int getPrimaryField()
|
||||
{
|
||||
return mPrimaryField;
|
||||
}
|
||||
|
||||
public View getView(int position, View convertView, ViewGroup parent)
|
||||
{
|
||||
MediaView view = null;
|
||||
@ -346,21 +346,31 @@ public class MediaAdapter extends BaseAdapter implements Filterable {
|
||||
canvas.drawText(mData.getField(mPrimaryField), padding, padding + (allocatedHeight - mTextSize) / 2 - paint.ascent(), paint);
|
||||
}
|
||||
|
||||
public void updateMedia(SongData data)
|
||||
public final void updateMedia(SongData data)
|
||||
{
|
||||
mData = data;
|
||||
invalidate();
|
||||
}
|
||||
|
||||
public SongData getExpanderData()
|
||||
public final int getPrimaryField()
|
||||
{
|
||||
return mExpanderPressed ? mData : null;
|
||||
return mPrimaryField;
|
||||
}
|
||||
|
||||
public final SongData getExpanderData()
|
||||
{
|
||||
return mData;
|
||||
}
|
||||
|
||||
public final boolean isExpanderPressed()
|
||||
{
|
||||
return mExpanderPressed;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onTouchEvent(MotionEvent event)
|
||||
{
|
||||
mExpanderPressed = mExpanderListener != null && event.getX() > getWidth() - mExpander.getWidth() - 3 * mTextSize / 2;
|
||||
mExpanderPressed = event.getX() > getWidth() - mExpander.getWidth() - 3 * mTextSize / 2;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -165,22 +165,26 @@ public class SongSelector extends TabActivity implements AdapterView.OnItemClick
|
||||
startService(intent);
|
||||
}
|
||||
|
||||
private void expand(MediaAdapter.MediaView view)
|
||||
{
|
||||
SongData data = view.getExpanderData();
|
||||
int field = view.getPrimaryField();
|
||||
SongData.Field limiter = new SongData.Field(field, data);
|
||||
for (int i = field; i != 3; ++i) {
|
||||
MediaAdapter tabAdapter = getAdapter(i);
|
||||
tabAdapter.hideAll();
|
||||
tabAdapter.setLimiter(limiter);
|
||||
}
|
||||
mTabHost.setCurrentTab(field);
|
||||
}
|
||||
|
||||
public void onItemClick(AdapterView<?> list, View view, int pos, long id)
|
||||
{
|
||||
MediaAdapter adapter = (MediaAdapter)list.getAdapter();
|
||||
SongData data = ((MediaAdapter.MediaView)view).getExpanderData();
|
||||
if (data != null) {
|
||||
int field = adapter.getPrimaryField();
|
||||
SongData.Field limiter = new SongData.Field(field, data);
|
||||
for (int i = field; i != 3; ++i) {
|
||||
MediaAdapter tabAdapter = getAdapter(i);
|
||||
tabAdapter.hideAll();
|
||||
tabAdapter.setLimiter(limiter);
|
||||
}
|
||||
mTabHost.setCurrentTab(field);
|
||||
} else {
|
||||
sendSongIntent(adapter.buildSongIntent(mDefaultAction, pos));
|
||||
}
|
||||
MediaAdapter.MediaView mediaView = (MediaAdapter.MediaView)view;
|
||||
if (mediaView.isExpanderPressed())
|
||||
expand(mediaView);
|
||||
else
|
||||
sendSongIntent(((MediaAdapter)list.getAdapter()).buildSongIntent(mDefaultAction, pos));
|
||||
}
|
||||
|
||||
public void afterTextChanged(Editable editable)
|
||||
@ -258,6 +262,7 @@ public class SongSelector extends TabActivity implements AdapterView.OnItemClick
|
||||
|
||||
private static final int MENU_PLAY = 0;
|
||||
private static final int MENU_ENQUEUE = 1;
|
||||
private static final int MENU_EXPAND = 2;
|
||||
|
||||
@Override
|
||||
public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo info)
|
||||
@ -266,11 +271,18 @@ public class SongSelector extends TabActivity implements AdapterView.OnItemClick
|
||||
int pos = (int)((AdapterView.AdapterContextMenuInfo)info).position;
|
||||
menu.add(0, MENU_PLAY, 0, R.string.play).setIntent(adapter.buildSongIntent(PlaybackService.ACTION_PLAY, pos));
|
||||
menu.add(0, MENU_ENQUEUE, 0, R.string.enqueue).setIntent(adapter.buildSongIntent(PlaybackService.ACTION_ENQUEUE, pos));
|
||||
if (adapter.hasExpanders())
|
||||
menu.add(0, MENU_EXPAND, 0, R.string.expand);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onContextItemSelected(MenuItem item)
|
||||
{
|
||||
if (item.getItemId() == MENU_EXPAND) {
|
||||
expand((MediaAdapter.MediaView)((AdapterView.AdapterContextMenuInfo)item.getMenuInfo()).targetView);
|
||||
return true;
|
||||
}
|
||||
|
||||
Intent intent = item.getIntent();
|
||||
if (mDefaultIsLastAction)
|
||||
mDefaultAction = intent.getIntExtra("action", PlaybackService.ACTION_PLAY);
|
||||
|
Loading…
x
Reference in New Issue
Block a user