diff --git a/res/values/translatable.xml b/res/values/translatable.xml index bab29127..d5e855fb 100644 --- a/res/values/translatable.xml +++ b/res/values/translatable.xml @@ -295,6 +295,7 @@ THE SOFTWARE. Clear queue Empty queue Show queue + Hide queue Dequeue rest Queue Toggle controls diff --git a/src/ch/blinkenlights/android/vanilla/FullPlaybackActivity.java b/src/ch/blinkenlights/android/vanilla/FullPlaybackActivity.java index 8eb13384..b4854019 100644 --- a/src/ch/blinkenlights/android/vanilla/FullPlaybackActivity.java +++ b/src/ch/blinkenlights/android/vanilla/FullPlaybackActivity.java @@ -64,7 +64,6 @@ public class FullPlaybackActivity extends PlaybackActivity private TextView mOverlayText; private View mControlsTop; - private View mSlidingView; private SeekBar mSeekBar; private TableLayout mInfoTable; @@ -161,8 +160,6 @@ public class FullPlaybackActivity extends PlaybackActivity coverView.setOnLongClickListener(this); mCoverView = coverView; - mSlidingView = findViewById(R.id.sliding_view); - TableLayout table = (TableLayout)findViewById(R.id.info_table); if (table != null) { table.setOnClickListener(this); @@ -362,7 +359,6 @@ public class FullPlaybackActivity extends PlaybackActivity menu.add(0, MENU_ENQUEUE_ARTIST, 0, R.string.enqueue_current_artist).setIcon(R.drawable.ic_menu_add); menu.add(0, MENU_ENQUEUE_GENRE, 0, R.string.enqueue_current_genre).setIcon(R.drawable.ic_menu_add); mFavorites = menu.add(0, MENU_SONG_FAVORITE, 0, R.string.add_to_favorites).setIcon(R.drawable.btn_rating_star_off_mtrl_alpha).setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM); - menu.add(0, MENU_SHOW_QUEUE, 0, R.string.show_queue); // ensure that mFavorites is updated mHandler.sendEmptyMessage(MSG_LOAD_FAVOURITE_INFO); diff --git a/src/ch/blinkenlights/android/vanilla/LibraryActivity.java b/src/ch/blinkenlights/android/vanilla/LibraryActivity.java index 358f400d..8b5956fa 100644 --- a/src/ch/blinkenlights/android/vanilla/LibraryActivity.java +++ b/src/ch/blinkenlights/android/vanilla/LibraryActivity.java @@ -796,12 +796,8 @@ public class LibraryActivity menu.add(0, MENU_PLAYBACK, 0, R.string.playback_view); super.onCreateOptionsMenu(menu); - MenuItem search = menu.add(0, MENU_SEARCH, 0, R.string.search).setIcon(R.drawable.ic_menu_search); - search.setVisible(false); - + menu.add(0, MENU_SEARCH, 0, R.string.search).setIcon(R.drawable.ic_menu_search).setVisible(false); menu.add(0, MENU_SORT, 0, R.string.sort_by).setIcon(R.drawable.ic_menu_sort_alphabetically); - menu.add(0, MENU_SHOW_QUEUE, 0, R.string.show_queue); - return true; } diff --git a/src/ch/blinkenlights/android/vanilla/PlaybackActivity.java b/src/ch/blinkenlights/android/vanilla/PlaybackActivity.java index eb7359db..97e34d98 100644 --- a/src/ch/blinkenlights/android/vanilla/PlaybackActivity.java +++ b/src/ch/blinkenlights/android/vanilla/PlaybackActivity.java @@ -54,10 +54,12 @@ public abstract class PlaybackActivity extends Activity implements TimelineCallback, Handler.Callback, View.OnClickListener, - CoverView.Callback + CoverView.Callback, + SlidingView.Callback { private Action mUpAction; private Action mDownAction; + private Menu mMenu; /** * A Handler running on the UI thread, in contrast with mHandler which runs @@ -77,6 +79,7 @@ public abstract class PlaybackActivity extends Activity protected ImageButton mPlayPauseButton; protected ImageButton mShuffleButton; protected ImageButton mEndButton; + protected SlidingView mSlidingView; protected int mState; private long mLastStateEvent; @@ -310,6 +313,10 @@ public abstract class PlaybackActivity extends Activity mEndButton = (ImageButton)findViewById(R.id.end_action); mEndButton.setOnClickListener(this); registerForContextMenu(mEndButton); + + mSlidingView = (SlidingView)findViewById(R.id.sliding_view); + if (mSlidingView != null) + mSlidingView.setCallback(this); } /** @@ -363,14 +370,18 @@ public abstract class PlaybackActivity extends Activity static final int MENU_CLEAR_QUEUE = 11; static final int MENU_SONG_FAVORITE = 12; static final int MENU_SHOW_QUEUE = 13; - static final int MENU_SAVE_AS_PLAYLIST = 14; - static final int MENU_DELETE = 15; - static final int MENU_EMPTY_QUEUE = 16; + static final int MENU_HIDE_QUEUE = 14; + static final int MENU_SAVE_AS_PLAYLIST = 15; + static final int MENU_DELETE = 16; + static final int MENU_EMPTY_QUEUE = 17; @Override public boolean onCreateOptionsMenu(Menu menu) { + mMenu = menu; menu.add(0, MENU_PREFS, 0, R.string.settings).setIcon(R.drawable.ic_menu_preferences); + menu.add(0, MENU_SHOW_QUEUE, 0, R.string.show_queue); + menu.add(0, MENU_HIDE_QUEUE, 0, R.string.hide_queue); return true; } @@ -385,14 +396,28 @@ public abstract class PlaybackActivity extends Activity PlaybackService.get(this).clearQueue(); break; case MENU_SHOW_QUEUE: - startActivity(new Intent(this, ShowQueueActivity.class)); + mSlidingView.expandSlide(); break; + case MENU_HIDE_QUEUE: + mSlidingView.hideSlide(); default: return false; } return true; } + + /** + * Called by SlidingView to signal a visibility change + */ + @Override + public void onSlideFullyExpanded(boolean visible) { + if (mMenu == null) + return; // not initialized yet + mMenu.findItem(MENU_HIDE_QUEUE).setVisible(visible); + mMenu.findItem(MENU_SHOW_QUEUE).setVisible(!visible); + } + /** * Call addToPlaylist with the results from a NewPlaylistDialog stored in * obj. diff --git a/src/ch/blinkenlights/android/vanilla/SlidingView.java b/src/ch/blinkenlights/android/vanilla/SlidingView.java index 46c79974..b97eb803 100644 --- a/src/ch/blinkenlights/android/vanilla/SlidingView.java +++ b/src/ch/blinkenlights/android/vanilla/SlidingView.java @@ -85,8 +85,7 @@ public class SlidingView extends FrameLayout */ private Callback mCallback; public interface Callback { - public abstract void onSlideHidden(); - public abstract void onSlideExpanded(); + public abstract void onSlideFullyExpanded(boolean visible); } @@ -324,10 +323,7 @@ public class SlidingView extends FrameLayout public void onAnimationEnd(Animator animation) { setSlaveViewStage(mCurrentStage); if (mCallback != null) { - if (mCurrentStage == 0) - mCallback.onSlideHidden(); - if (mCurrentStage == mStages.size()-1) - mCallback.onSlideExpanded(); + mCallback.onSlideFullyExpanded( mCurrentStage == mStages.size()-1 ); } } @Override