Music player UI refresh.
diff --git a/src/com/android/music/ArtistAlbumBrowserActivity.java b/src/com/android/music/ArtistAlbumBrowserActivity.java
index 9aa42b4..e4fd5c2 100644
--- a/src/com/android/music/ArtistAlbumBrowserActivity.java
+++ b/src/com/android/music/ArtistAlbumBrowserActivity.java
@@ -22,10 +22,12 @@
import android.app.SearchManager;
import android.content.AsyncQueryHandler;
import android.content.BroadcastReceiver;
+import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.content.ServiceConnection;
import android.content.res.Resources;
import android.database.Cursor;
import android.database.CursorWrapper;
@@ -36,9 +38,13 @@
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
+import android.os.IBinder;
import android.os.Message;
+import android.os.Parcel;
+import android.os.Parcelable;
import android.provider.MediaStore;
import android.util.Log;
+import android.util.SparseArray;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
@@ -47,9 +53,6 @@
import android.view.ViewGroup;
import android.view.Window;
import android.view.ContextMenu.ContextMenuInfo;
-import android.widget.CursorAdapter;
-import android.widget.CursorTreeAdapter;
-import android.widget.ExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.ImageView;
import android.widget.SectionIndexer;
@@ -61,7 +64,7 @@
public class ArtistAlbumBrowserActivity extends ExpandableListActivity
- implements View.OnCreateContextMenuListener, MusicUtils.Defs
+ implements View.OnCreateContextMenuListener, MusicUtils.Defs, ServiceConnection
{
private String mCurrentArtistId;
private String mCurrentArtistName;
@@ -73,9 +76,11 @@
private ArtistAlbumListAdapter mAdapter;
private boolean mAdapterSent;
private final static int SEARCH = CHILD_MENU_BASE;
+ private static int mLastListPosCourse = -1;
+ private static int mLastListPosFine = -1;
- public ArtistAlbumBrowserActivity()
- {
+ public void onTabClick(View v) {
+ MusicUtils.processTabClick(this, v, R.id.artisttab);
}
/** Called when the activity is first created. */
@@ -83,6 +88,7 @@
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
+ requestWindowFeature(Window.FEATURE_NO_TITLE);
setVolumeControlStream(AudioManager.STREAM_MUSIC);
if (icicle != null) {
mCurrentAlbumId = icicle.getString("selectedalbum");
@@ -90,7 +96,7 @@
mCurrentArtistId = icicle.getString("selectedartist");
mCurrentArtistName = icicle.getString("selectedartistname");
}
- MusicUtils.bindToService(this);
+ MusicUtils.bindToService(this, this);
IntentFilter f = new IntentFilter();
f.addAction(Intent.ACTION_MEDIA_SCANNER_STARTED);
@@ -100,8 +106,8 @@
registerReceiver(mScanListener, f);
setContentView(R.layout.media_picker_activity_expanding);
+ MusicUtils.updateButtonBar(this, R.id.artisttab);
ExpandableListView lv = getExpandableListView();
- lv.setFastScrollEnabled(true);
lv.setOnCreateContextMenuListener(this);
lv.setTextFilterEnabled(true);
@@ -153,6 +159,10 @@
@Override
public void onDestroy() {
+ ExpandableListView lv = getExpandableListView();
+ mLastListPosCourse = lv.getFirstVisiblePosition();
+ mLastListPosFine = lv.getChildAt(0).getTop();
+
MusicUtils.unbindFromService(this);
if (!mAdapterSent) {
Cursor c = mAdapter.getCursor();
@@ -186,6 +196,7 @@
@Override
public void onReceive(Context context, Intent intent) {
getExpandableListView().invalidateViews();
+ MusicUtils.updateNowPlaying(ArtistAlbumBrowserActivity.this);
}
};
private BroadcastReceiver mScanListener = new BroadcastReceiver() {
@@ -229,6 +240,13 @@
return;
}
+ // restore previous position
+ if (mLastListPosCourse >= 0) {
+ ExpandableListView elv = getExpandableListView();
+ elv.setSelectionFromTop(mLastListPosCourse, mLastListPosFine);
+ mLastListPosCourse = -1;
+ }
+
MusicUtils.hideDatabaseError(this);
setTitle();
}
@@ -260,15 +278,14 @@
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
- menu.add(0, GOTO_START, 0, R.string.goto_start).setIcon(R.drawable.ic_menu_music_library);
- menu.add(0, GOTO_PLAYBACK, 0, R.string.goto_playback).setIcon(R.drawable.ic_menu_playback);
+ menu.add(0, PARTY_SHUFFLE, 0, R.string.party_shuffle); // icon will be set in onPrepareOptionsMenu()
menu.add(0, SHUFFLE_ALL, 0, R.string.shuffle_all).setIcon(R.drawable.ic_menu_shuffle);
return true;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
- menu.findItem(GOTO_PLAYBACK).setVisible(MusicUtils.isMusicLoaded());
+ MusicUtils.setPartyShuffleMenuIcon(menu);
return super.onPrepareOptionsMenu(menu);
}
@@ -277,17 +294,9 @@
Intent intent;
Cursor cursor;
switch (item.getItemId()) {
- case GOTO_START:
- intent = new Intent();
- intent.setClass(this, MusicBrowserActivity.class);
- intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- startActivity(intent);
- return true;
-
- case GOTO_PLAYBACK:
- intent = new Intent("com.android.music.PLAYBACK_VIEWER");
- startActivity(intent);
- return true;
+ case PARTY_SHUFFLE:
+ MusicUtils.togglePartyShuffle();
+ break;
case SHUFFLE_ALL:
cursor = MusicUtils.query(this, MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
@@ -843,5 +852,15 @@
}
private Cursor mArtistCursor;
+
+ @Override
+ public void onServiceConnected(ComponentName name, IBinder service) {
+ MusicUtils.updateNowPlaying(this);
+ }
+
+ @Override
+ public void onServiceDisconnected(ComponentName name) {
+ finish();
+ }
}