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