Music player UI refresh.
diff --git a/src/com/android/music/PlaylistBrowserActivity.java b/src/com/android/music/PlaylistBrowserActivity.java
index ccdb529..fb719b2 100644
--- a/src/com/android/music/PlaylistBrowserActivity.java
+++ b/src/com/android/music/PlaylistBrowserActivity.java
@@ -70,6 +70,8 @@
     private static final long PODCASTS_PLAYLIST = -3;
     private PlaylistListAdapter mAdapter;
     boolean mAdapterSent;
+    private static int mLastListPosCourse = -1;
+    private static int mLastListPosFine = -1;
 
     private boolean mCreateShortcut;
 
@@ -90,6 +92,7 @@
         }
 
         requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
+        requestWindowFeature(Window.FEATURE_NO_TITLE);
         setVolumeControlStream(AudioManager.STREAM_MUSIC);
         MusicUtils.bindToService(this, new ServiceConnection() {
             public void onServiceConnected(ComponentName classname, IBinder obj) {
@@ -108,7 +111,9 @@
                         MusicUtils.playPlaylist(PlaylistBrowserActivity.this, id);
                     }
                     finish();
+                    return;
                 }
+                MusicUtils.updateNowPlaying(PlaylistBrowserActivity.this);
             }
 
             public void onServiceDisconnected(ComponentName classname) {
@@ -123,6 +128,7 @@
         registerReceiver(mScanListener, f);
 
         setContentView(R.layout.media_picker_activity);
+        MusicUtils.updateButtonBar(this, R.id.playlisttab);
         ListView lv = getListView();
         lv.setOnCreateContextMenuListener(this);
         lv.setTextFilterEnabled(true);
@@ -168,6 +174,9 @@
     
     @Override
     public void onDestroy() {
+        ListView lv = getListView();
+        mLastListPosCourse = lv.getFirstVisiblePosition();
+        mLastListPosFine = lv.getChildAt(0).getTop();
         MusicUtils.unbindFromService(this);
         if (!mAdapterSent) {
             Cursor c = mAdapter.getCursor();
@@ -189,6 +198,7 @@
         super.onResume();
 
         MusicUtils.setSpinnerState(this);
+        MusicUtils.updateNowPlaying(PlaylistBrowserActivity.this);
     }
     @Override
     public void onPause() {
@@ -225,6 +235,11 @@
             return;
         }
 
+        // restore previous position
+        if (mLastListPosCourse >= 0) {
+            getListView().setSelectionFromTop(mLastListPosCourse, mLastListPosFine);
+            mLastListPosCourse = -1;
+        }
         MusicUtils.hideDatabaseError(this);
         setTitle();
     }
@@ -236,29 +251,24 @@
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
         if (!mCreateShortcut) {
-            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).setVisible(MusicUtils.isMusicLoaded());
+            menu.add(0, PARTY_SHUFFLE, 0, R.string.party_shuffle); // icon will be set in onPrepareOptionsMenu()
         }
         return super.onCreateOptionsMenu(menu);
     }
 
     @Override
+    public boolean onPrepareOptionsMenu(Menu menu) {
+        MusicUtils.setPartyShuffleMenuIcon(menu);
+        return super.onPrepareOptionsMenu(menu);
+    }
+
+    @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         Intent intent;
         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;
         }
         return super.onOptionsItemSelected(item);
     }