From 41e63e331ff846ced531678e18871708ef8c78f1 Mon Sep 17 00:00:00 2001 From: Christopher Eby Date: Sun, 21 Mar 2010 16:12:17 -0500 Subject: [PATCH] Make SongSelector a dialog This prevents the NowPlayingActivity from being stopped, so the covers will update in the background when a song is selected in the song selector. --- AndroidManifest.xml | 5 +-- src/org/kreed/vanilla/NowPlayingActivity.java | 15 ++++++- .../vanilla/PlaybackServiceActivity.java | 8 ++-- src/org/kreed/vanilla/SongSelector.java | 42 +++++++------------ 4 files changed, 33 insertions(+), 37 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 83bc053c..b0516933 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -31,9 +31,6 @@ android:theme="@android:style/Theme.Dialog" android:excludeFromRecents="true" android:launchMode="singleInstance" /> - @@ -41,4 +38,4 @@ - + \ No newline at end of file diff --git a/src/org/kreed/vanilla/NowPlayingActivity.java b/src/org/kreed/vanilla/NowPlayingActivity.java index dc97ed4e..0677a7fb 100644 --- a/src/org/kreed/vanilla/NowPlayingActivity.java +++ b/src/org/kreed/vanilla/NowPlayingActivity.java @@ -21,6 +21,7 @@ package org.kreed.vanilla; import org.kreed.vanilla.IPlaybackService; import org.kreed.vanilla.R; +import android.app.Dialog; import android.content.Intent; import android.content.ServiceConnection; import android.graphics.Color; @@ -58,6 +59,8 @@ public class NowPlayingActivity extends PlaybackServiceActivity implements View. private int mDuration; private boolean mSeekBarTracking; + private static final int SONG_SELECTOR = 8; + private static final int MENU_QUIT = 0; private static final int MENU_PREFS = 2; private static final int MENU_LIBRARY = 3; @@ -229,7 +232,7 @@ public class NowPlayingActivity extends PlaybackServiceActivity implements View. startActivity(new Intent(this, PreferencesActivity.class)); break; case MENU_LIBRARY: - onSearchRequested(); + showDialog(SONG_SELECTOR); break; } @@ -239,10 +242,18 @@ public class NowPlayingActivity extends PlaybackServiceActivity implements View. @Override public boolean onSearchRequested() { - startActivity(new Intent(this, SongSelector.class)); + showDialog(SONG_SELECTOR); return false; } + @Override + public Dialog onCreateDialog(int id) + { + if (id == SONG_SELECTOR) + return new SongSelector(this); + return null; + } + @Override public boolean onKeyUp(int keyCode, KeyEvent event) { diff --git a/src/org/kreed/vanilla/PlaybackServiceActivity.java b/src/org/kreed/vanilla/PlaybackServiceActivity.java index 1fa044d8..1b72b309 100644 --- a/src/org/kreed/vanilla/PlaybackServiceActivity.java +++ b/src/org/kreed/vanilla/PlaybackServiceActivity.java @@ -80,11 +80,11 @@ public abstract class PlaybackServiceActivity extends Activity implements Servic } } - public static boolean handleKeyLongPress(Activity activity, int keyCode) + public static boolean handleKeyLongPress(Context context, int keyCode) { switch (keyCode) { case KeyEvent.KEYCODE_BACK: - quit(activity); + quit(context); return true; } @@ -97,9 +97,9 @@ public abstract class PlaybackServiceActivity extends Activity implements Servic return handleKeyLongPress(this, keyCode); } - protected static void quit(Activity activity) + protected static void quit(Context context) { - activity.stopService(new Intent(activity, PlaybackService.class)); + context.stopService(new Intent(context, PlaybackService.class)); ContextApplication.finishAllActivities(); } diff --git a/src/org/kreed/vanilla/SongSelector.java b/src/org/kreed/vanilla/SongSelector.java index e3aa50fb..cb2fe400 100644 --- a/src/org/kreed/vanilla/SongSelector.java +++ b/src/org/kreed/vanilla/SongSelector.java @@ -22,13 +22,13 @@ import java.util.Arrays; import org.kreed.vanilla.R; -import android.app.TabActivity; +import android.app.Dialog; +import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.res.Resources; import android.graphics.Color; import android.graphics.drawable.PaintDrawable; -import android.os.Bundle; import android.os.Handler; import android.preference.PreferenceManager; import android.text.Editable; @@ -40,7 +40,6 @@ import android.view.KeyEvent; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; -import android.view.Window; import android.widget.AdapterView; import android.widget.Filter; import android.widget.LinearLayout; @@ -49,7 +48,7 @@ import android.widget.TabHost; import android.widget.TextView; import android.widget.Toast; -public class SongSelector extends TabActivity implements AdapterView.OnItemClickListener, TextWatcher, View.OnClickListener, TabHost.OnTabChangeListener, Filter.FilterListener { +public class SongSelector extends Dialog implements AdapterView.OnItemClickListener, TextWatcher, View.OnClickListener, TabHost.OnTabChangeListener, Filter.FilterListener { private TabHost mTabHost; private TextView mTextFilter; private View mClearButton; @@ -74,24 +73,20 @@ public class SongSelector extends TabActivity implements AdapterView.OnItemClick ListView view = (ListView)findViewById(id); view.setOnItemClickListener(this); view.setOnCreateContextMenuListener(this); - view.setAdapter(new MediaAdapter(this, songs, lineA, lineB, expanderListener)); + view.setAdapter(new MediaAdapter(getContext(), songs, lineA, lineB, expanderListener)); } - @Override - public void onCreate(Bundle icicle) + public SongSelector(Context context) { - super.onCreate(icicle); - - ContextApplication.addActivity(this); - - requestWindowFeature(Window.FEATURE_NO_TITLE); + super(context, android.R.style.Theme_Black_NoTitleBar); setContentView(R.layout.song_selector); - mTabHost = getTabHost(); + mTabHost = (TabHost)findViewById(android.R.id.tabhost); + mTabHost.setup(); mTabHost.setOnTabChangedListener(this); - Resources res = getResources(); + Resources res = context.getResources(); mTabHost.addTab(mTabHost.newTabSpec("tab_artists").setIndicator(res.getText(R.string.artists), res.getDrawable(R.drawable.tab_artists)).setContent(R.id.artist_list)); mTabHost.addTab(mTabHost.newTabSpec("tab_albums").setIndicator(res.getText(R.string.albums), res.getDrawable(R.drawable.tab_albums)).setContent(R.id.album_list)); mTabHost.addTab(mTabHost.newTabSpec("tab_songs").setIndicator(res.getText(R.string.songs), res.getDrawable(R.drawable.tab_songs)).setContent(R.id.song_list)); @@ -104,7 +99,7 @@ public class SongSelector extends TabActivity implements AdapterView.OnItemClick mLimiterViews = (ViewGroup)findViewById(R.id.limiter_layout); - SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this); + SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context); int inputType; if (settings.getBoolean("phone_input", false)) inputType = InputType.TYPE_CLASS_PHONE; @@ -137,13 +132,6 @@ public class SongSelector extends TabActivity implements AdapterView.OnItemClick }); } - @Override - public void onDestroy() - { - super.onDestroy(); - ContextApplication.removeActivity(this); - } - @Override public boolean onKeyDown(int keyCode, KeyEvent event) { @@ -158,11 +146,11 @@ public class SongSelector extends TabActivity implements AdapterView.OnItemClick { int action = intent.getIntExtra("action", PlaybackService.ACTION_PLAY) == PlaybackService.ACTION_PLAY ? R.string.playing : R.string.enqueued; String title = intent.getStringExtra("title"); - String text = getResources().getString(action, title); - Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); + String text = getContext().getResources().getString(action, title); + Toast.makeText(getContext(), text, Toast.LENGTH_SHORT).show(); intent.removeExtra("title"); - startService(intent); + getContext().startService(intent); } private void expand(MediaAdapter.MediaView view) @@ -228,7 +216,7 @@ public class SongSelector extends TabActivity implements AdapterView.OnItemClick PaintDrawable background = new PaintDrawable(Color.GRAY); background.setCornerRadius(5); - TextView view = new TextView(this); + TextView view = new TextView(getContext()); view.setSingleLine(); view.setEllipsize(TextUtils.TruncateAt.MARQUEE); view.setText(data.getField(i) + " | X"); @@ -306,6 +294,6 @@ public class SongSelector extends TabActivity implements AdapterView.OnItemClick @Override public boolean onKeyLongPress(int keyCode, KeyEvent event) { - return PlaybackServiceActivity.handleKeyLongPress(this, keyCode); + return PlaybackServiceActivity.handleKeyLongPress(getContext(), keyCode); } } \ No newline at end of file