diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/AbsPlayerFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/AbsPlayerFragment.java index 33ca3419..2c81de96 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/AbsPlayerFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/AbsPlayerFragment.java @@ -49,7 +49,7 @@ public abstract class AbsPlayerFragment extends AbsMusicServiceFragment implemen new SleepTimerDialog().show(getFragmentManager(), "SET_SLEEP_TIMER"); return true; case R.id.action_toggle_favorite: - MusicUtil.toggleFavorite(getActivity(), song); + toggleFavorite(song); return true; case R.id.action_share: SongShareDialog.create(song).show(getFragmentManager(), "SHARE_SONG"); @@ -83,6 +83,10 @@ public abstract class AbsPlayerFragment extends AbsMusicServiceFragment implemen return false; } + protected void toggleFavorite(Song song){ + MusicUtil.toggleFavorite(getActivity(), song); + } + public abstract void onShow(); public abstract void onHide(); diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerAlbumCoverFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerAlbumCoverFragment.java index 12e5532c..fd74974c 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerAlbumCoverFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerAlbumCoverFragment.java @@ -4,7 +4,9 @@ import android.animation.Animator; import android.os.Bundle; import android.support.annotation.ColorInt; import android.support.v4.view.ViewPager; +import android.view.GestureDetector; import android.view.LayoutInflater; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.animation.AccelerateInterpolator; @@ -32,7 +34,7 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements @Bind(R.id.player_favorite_icon) ImageView favoriteIcon; - private OnColorChangedListener onColorChangedListener; + private Callbacks callbacks; private int currentPosition; @Override @@ -49,6 +51,23 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements viewPager.setOffscreenPageLimit(2); updatePlayingQueue(); viewPager.addOnPageChangeListener(this); + viewPager.setOnTouchListener(new View.OnTouchListener() { + GestureDetector gestureDetector = new GestureDetector(getActivity(), new GestureDetector.SimpleOnGestureListener() { + @Override + public boolean onDoubleTap(MotionEvent e) { + if (callbacks != null) { + callbacks.onFavoriteToggled(); + return true; + } + return super.onDoubleTap(e); + } + }); + + @Override + public boolean onTouch(View v, MotionEvent event) { + return gestureDetector.onTouchEvent(event); + } + }); } @Override @@ -144,14 +163,16 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements } private void notifyColorChange(int color) { - if (onColorChangedListener != null) onColorChangedListener.onColorChanged(color); + if (callbacks != null) callbacks.onColorChanged(color); } - public void setOnColorChangedListener(OnColorChangedListener listener) { - onColorChangedListener = listener; + public void setCallbacks(Callbacks listener) { + callbacks = listener; } - interface OnColorChangedListener { + interface Callbacks { void onColorChanged(int color); + + void onFavoriteToggled(); } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerFragment.java index b5a20d91..e7e413f4 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerFragment.java @@ -11,7 +11,6 @@ import android.support.v7.widget.CardView; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.view.LayoutInflater; -import android.view.MenuItem; import android.view.View; import android.view.ViewAnimationUtils; import android.view.ViewGroup; @@ -39,7 +38,7 @@ import org.solovyev.android.views.llm.LinearLayoutManager; import butterknife.Bind; import butterknife.ButterKnife; -public class PlayerFragment extends AbsPlayerFragment implements PlayerAlbumCoverFragment.OnColorChangedListener, SlidingUpPanelLayout.PanelSlideListener { +public class PlayerFragment extends AbsPlayerFragment implements PlayerAlbumCoverFragment.Callbacks, SlidingUpPanelLayout.PanelSlideListener { public static final String TAG = PlayerFragment.class.getSimpleName(); @Bind(R.id.player_toolbar) @@ -172,7 +171,7 @@ public class PlayerFragment extends AbsPlayerFragment implements PlayerAlbumCove playbackControlsFragment = (PlaybackControlsFragment) getChildFragmentManager().findFragmentById(R.id.playback_controls_fragment); playerAlbumCoverFragment = (PlayerAlbumCoverFragment) getChildFragmentManager().findFragmentById(R.id.player_album_cover_fragment); - playerAlbumCoverFragment.setOnColorChangedListener(this); + playerAlbumCoverFragment.setCallbacks(this); } private void setUpPlayerToolbar() { @@ -254,18 +253,14 @@ public class PlayerFragment extends AbsPlayerFragment implements PlayerAlbumCove } @Override - public boolean onMenuItemClick(MenuItem item) { - final Song song = MusicPlayerRemote.getCurrentSong(); - switch (item.getItemId()) { - case R.id.action_toggle_favorite: - super.onMenuItemClick(item); - if (MusicUtil.isFavorite(getActivity(), song)) { - playerAlbumCoverFragment.showHeartAnimation(); - } - updateIsFavorite(); - return true; + protected void toggleFavorite(Song song) { + super.toggleFavorite(song); + if (song.id == MusicPlayerRemote.getCurrentSong().id) { + if (MusicUtil.isFavorite(getActivity(), song)) { + playerAlbumCoverFragment.showHeartAnimation(); + } + updateIsFavorite(); } - return super.onMenuItemClick(item); } @Override @@ -294,6 +289,11 @@ public class PlayerFragment extends AbsPlayerFragment implements PlayerAlbumCove getCallbacks().onPaletteColorChanged(); } + @Override + public void onFavoriteToggled() { + toggleFavorite(MusicPlayerRemote.getCurrentSong()); + } + @Override public void onPanelSlide(View view, float slide) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {