Toolbar menu is back to the now playing screen

This commit is contained in:
Karim Abou Zeid 2015-08-14 20:36:45 +02:00
commit 66e5ac0bb6

View file

@ -2,6 +2,7 @@ package com.kabouzeid.gramophone.ui.activities.base;
import android.animation.Animator; import android.animation.Animator;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.res.ColorStateList; import android.content.res.ColorStateList;
import android.graphics.Bitmap; import android.graphics.Bitmap;
@ -21,11 +22,13 @@ import android.support.v7.widget.CardView;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
import android.util.TypedValue; import android.util.TypedValue;
import android.view.GestureDetector; import android.view.GestureDetector;
import android.view.MenuItem;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.view.View; import android.view.View;
import android.view.ViewAnimationUtils; import android.view.ViewAnimationUtils;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.animation.DecelerateInterpolator; import android.view.animation.DecelerateInterpolator;
import android.view.animation.OvershootInterpolator;
import android.widget.FrameLayout; import android.widget.FrameLayout;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.ImageView; import android.widget.ImageView;
@ -37,13 +40,22 @@ import android.widget.TextView;
import com.afollestad.materialdialogs.ThemeSingleton; import com.afollestad.materialdialogs.ThemeSingleton;
import com.afollestad.materialdialogs.util.DialogUtils; import com.afollestad.materialdialogs.util.DialogUtils;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.dialogs.AddToPlaylistDialog;
import com.kabouzeid.gramophone.dialogs.SleepTimerDialog;
import com.kabouzeid.gramophone.dialogs.SongDetailDialog;
import com.kabouzeid.gramophone.dialogs.SongShareDialog;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote; import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.imageloader.BlurProcessor; import com.kabouzeid.gramophone.imageloader.BlurProcessor;
import com.kabouzeid.gramophone.loader.SongLoader;
import com.kabouzeid.gramophone.misc.SimpleAnimatorListener;
import com.kabouzeid.gramophone.misc.SimpleOnSeekbarChangeListener; import com.kabouzeid.gramophone.misc.SimpleOnSeekbarChangeListener;
import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.service.MusicService; import com.kabouzeid.gramophone.service.MusicService;
import com.kabouzeid.gramophone.ui.activities.tageditor.AbsTagEditorActivity;
import com.kabouzeid.gramophone.ui.activities.tageditor.SongTagEditorActivity;
import com.kabouzeid.gramophone.util.ColorUtil; import com.kabouzeid.gramophone.util.ColorUtil;
import com.kabouzeid.gramophone.util.MusicUtil; import com.kabouzeid.gramophone.util.MusicUtil;
import com.kabouzeid.gramophone.util.NavigationUtil;
import com.kabouzeid.gramophone.util.PreferenceUtil; import com.kabouzeid.gramophone.util.PreferenceUtil;
import com.kabouzeid.gramophone.util.Util; import com.kabouzeid.gramophone.util.Util;
import com.kabouzeid.gramophone.util.ViewUtil; import com.kabouzeid.gramophone.util.ViewUtil;
@ -66,7 +78,7 @@ import butterknife.ButterKnife;
* Do not use {@link #setContentView(int)} but wrap your layout with * Do not use {@link #setContentView(int)} but wrap your layout with
* {@link #wrapSlidingMusicPanelAndFab(int)} first and then return it in {@link #createContentView()} * {@link #wrapSlidingMusicPanelAndFab(int)} first and then return it in {@link #createContentView()}
*/ */
public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivity implements SlidingUpPanelLayout.PanelSlideListener, SharedPreferences.OnSharedPreferenceChangeListener { public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivity implements SlidingUpPanelLayout.PanelSlideListener, SharedPreferences.OnSharedPreferenceChangeListener, Toolbar.OnMenuItemClickListener {
public static final String TAG = AbsSlidingMusicPanelActivity.class.getSimpleName(); public static final String TAG = AbsSlidingMusicPanelActivity.class.getSimpleName();
private static final int FAB_CIRCULAR_REVEAL_ANIMATION_TIME = 1000; private static final int FAB_CIRCULAR_REVEAL_ANIMATION_TIME = 1000;
@ -658,22 +670,39 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
} }
private void setUpPlayerToolbar() { private void setUpPlayerToolbar() {
// TODO setUpPlayerToolbar playerToolbar.inflateMenu(R.menu.menu_player);
playerToolbar.setNavigationIcon(R.drawable.ic_close_white_24dp);
playerToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
slidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED);
}
});
playerToolbar.setOnMenuItemClickListener(this);
}
private void updatePlayerMenu() {
boolean isFavorite = MusicUtil.isFavorite(this, song);
playerToolbar.getMenu().findItem(R.id.action_toggle_favorite)
.setIcon(isFavorite ? R.drawable.ic_favorite_white_24dp : R.drawable.ic_favorite_outline_white_24dp)
.setTitle(isFavorite ? getString(R.string.action_remove_from_favorites) : getString(R.string.action_add_to_favorites));
} }
private void updateCurrentSong() { private void updateCurrentSong() {
getCurrentSong(); getCurrentSong();
updateMiniPlayerAndHeaderText(); updateMiniPlayerAndHeaderText();
setUpAlbumArtAndApplyPalette(); setUpAlbumArtAndApplyPalette();
// TODO invalidateOptionsMenu() for the custom player menu updatePlayerMenu();
} }
private void getCurrentSong() { private void getCurrentSong() {
song = MusicPlayerRemote.getCurrentSong(); song = MusicPlayerRemote.getCurrentSong();
if (song.id == -1) { if (song.id == -1) {
// TODO disable and hide sliding panel & fab playPauseFab.setVisibility(View.GONE);
slidingUpPanelLayout.setVisibility(View.GONE);
} else { } else {
// TODO enable and show sliding panel & fab playPauseFab.setVisibility(View.VISIBLE);
slidingUpPanelLayout.setVisibility(View.VISIBLE);
} }
} }
@ -863,100 +892,84 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
} }
} }
// TODO use this for the custom player menu @Override
// @Override public boolean onMenuItemClick(MenuItem item) {
// public boolean onCreateOptionsMenu(@NonNull Menu menu) { switch (item.getItemId()) {
// getMenuInflater().inflate(R.menu.menu_player, menu); case R.id.action_sleep_timer:
// boolean isFavorite = MusicUtil.isFavorite(this, song); new SleepTimerDialog().show(getSupportFragmentManager(), "SET_SLEEP_TIMER");
// menu.findItem(R.id.action_toggle_favorite) return true;
// .setIcon(isFavorite ? R.drawable.ic_favorite_white_24dp : R.drawable.ic_favorite_outline_white_24dp) case R.id.action_toggle_favorite:
// .setTitle(isFavorite ? getString(R.string.action_remove_from_favorites) : getString(R.string.action_add_to_favorites)); MusicUtil.toggleFavorite(this, song);
// return true; if (MusicUtil.isFavorite(this, song)) {
// } animateSetFavorite();
// }
// @Override updatePlayerMenu();
// public boolean onOptionsItemSelected(@NonNull MenuItem item) { return true;
// int id = item.getItemId(); case R.id.action_share:
// switch (id) { SongShareDialog.create(song).show(getSupportFragmentManager(), "SHARE_SONG");
// case R.id.action_sleep_timer: return true;
// new SleepTimerDialog().show(getSupportFragmentManager(), "SET_SLEEP_TIMER"); case R.id.action_equalizer:
// return true; NavigationUtil.openEqualizer(this);
// case R.id.action_toggle_favorite: return true;
// MusicUtil.toggleFavorite(this, song); case R.id.action_shuffle_all:
// if (MusicUtil.isFavorite(this, song)) { MusicPlayerRemote.openAndShuffleQueue(SongLoader.getAllSongs(this), true);
// animateSetFavorite(); return true;
// } case R.id.action_add_to_playlist:
// invalidateOptionsMenu(); AddToPlaylistDialog.create(song).show(getSupportFragmentManager(), "ADD_PLAYLIST");
// return true; return true;
// case R.id.action_share: case R.id.action_playing_queue:
// SongShareDialog.create(song).show(getSupportFragmentManager(), "SHARE_SONG"); NavigationUtil.openPlayingQueueDialog(this);
// return true; return true;
// case R.id.action_equalizer: case R.id.action_tag_editor:
// NavigationUtil.openEqualizer(this); Intent intent = new Intent(this, SongTagEditorActivity.class);
// return true; intent.putExtra(AbsTagEditorActivity.EXTRA_ID, song.id);
// case R.id.action_shuffle_all: startActivity(intent);
// MusicPlayerRemote.openAndShuffleQueue(SongLoader.getAllSongs(this), true); return true;
// return true; case R.id.action_details:
// case R.id.action_add_to_playlist: SongDetailDialog.create(song).show(getSupportFragmentManager(), "SONG_DETAIL");
// AddToPlaylistDialog.create(song).show(getSupportFragmentManager(), "ADD_PLAYLIST"); return true;
// return true; case R.id.action_go_to_album:
// case android.R.id.home: NavigationUtil.goToAlbum(this, song.albumId, addPlayPauseFabToSharedViews(null));
// super.onBackPressed(); return true;
// return true; case R.id.action_go_to_artist:
// case R.id.action_playing_queue: NavigationUtil.goToArtist(this, song.artistId, addPlayPauseFabToSharedViews(null));
// NavigationUtil.openPlayingQueueDialog(this); return true;
// return true; }
// case R.id.action_tag_editor: return false;
// Intent intent = new Intent(this, SongTagEditorActivity.class); }
// intent.putExtra(AbsTagEditorActivity.EXTRA_ID, song.id);
// startActivity(intent); private void animateSetFavorite() {
// return true; favoriteIcon.clearAnimation();
// case R.id.action_details:
// SongDetailDialog.create(song).show(getSupportFragmentManager(), "SONG_DETAIL"); favoriteIcon.setAlpha(0f);
// return true; favoriteIcon.setScaleX(0f);
// case R.id.action_go_to_album: favoriteIcon.setScaleY(0f);
// NavigationUtil.goToAlbum(this, song.albumId, addPlayPauseFabToSharedViews(null)); favoriteIcon.setVisibility(View.VISIBLE);
// return true; favoriteIcon.setPivotX(favoriteIcon.getWidth() / 2);
// case R.id.action_go_to_artist: favoriteIcon.setPivotY(favoriteIcon.getHeight() / 2);
// NavigationUtil.goToArtist(this, song.artistId, addPlayPauseFabToSharedViews(null));
// return true; favoriteIcon.animate()
// } .setDuration(600)
// .setInterpolator(new OvershootInterpolator())
// return super.onOptionsItemSelected(item); .scaleX(1f)
// } .scaleY(1f)
// .alpha(1f)
// private void animateSetFavorite() { .setListener(new SimpleAnimatorListener() {
// favoriteIcon.clearAnimation(); @Override
// public void onAnimationCancel(Animator animation) {
// favoriteIcon.setAlpha(0f); favoriteIcon.setVisibility(View.INVISIBLE);
// favoriteIcon.setScaleX(0f); }
// favoriteIcon.setScaleY(0f); })
// favoriteIcon.setVisibility(View.VISIBLE); .withEndAction(new Runnable() {
// favoriteIcon.setPivotX(favoriteIcon.getWidth() / 2); @Override
// favoriteIcon.setPivotY(favoriteIcon.getHeight() / 2); public void run() {
// favoriteIcon.animate()
// favoriteIcon.animate() .setDuration(300)
// .setDuration(600) .setInterpolator(new DecelerateInterpolator())
// .setInterpolator(new OvershootInterpolator()) .alpha(0f)
// .scaleX(1f) .start();
// .scaleY(1f) }
// .alpha(1f) })
// .setListener(new SimpleAnimatorListener() { .start();
// @Override }
// public void onAnimationCancel(Animator animation) {
// favoriteIcon.setVisibility(View.INVISIBLE);
// }
// })
// .withEndAction(new Runnable() {
// @Override
// public void run() {
// favoriteIcon.animate()
// .setDuration(300)
// .setInterpolator(new DecelerateInterpolator())
// .alpha(0f)
// .start();
// }
// })
// .start();
// }
} }