From cb11044999f128c384e3e858613bebbc1f5a8264 Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Tue, 24 Mar 2015 21:15:21 +0100 Subject: [PATCH] Add shuffle all to every menu --- .../adapter/songadapter/SongAdapter.java | 11 ++- .../gramophone/helper/MusicPlayerRemote.java | 8 ++ .../ui/activities/AlbumDetailActivity.java | 4 + .../ui/activities/ArtistDetailActivity.java | 3 + .../ui/activities/MainActivity.java | 3 + .../activities/MusicControllerActivity.java | 3 + app/src/main/res/layout/item_list_song.xml | 95 +++++++++++-------- app/src/main/res/menu/menu_album_detail.xml | 6 ++ app/src/main/res/menu/menu_artist_detail.xml | 6 ++ app/src/main/res/menu/menu_main.xml | 6 ++ app/src/main/res/menu/menu_music_playing.xml | 7 ++ app/src/main/res/menu/menu_playlists.xml | 6 ++ 12 files changed, 112 insertions(+), 46 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/songadapter/SongAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/songadapter/SongAdapter.java index 6cd70df1..2031fd06 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/songadapter/SongAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/songadapter/SongAdapter.java @@ -23,7 +23,6 @@ import com.kabouzeid.gramophone.loader.SongLoader; import com.kabouzeid.gramophone.misc.AppKeys; import com.kabouzeid.gramophone.model.DataBaseChangedEvent; import com.kabouzeid.gramophone.model.Song; -import com.kabouzeid.gramophone.service.MusicService; import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity; import com.kabouzeid.gramophone.ui.activities.tageditor.SongTagEditorActivity; import com.kabouzeid.gramophone.util.MusicUtil; @@ -34,7 +33,6 @@ import com.squareup.picasso.Picasso; import java.io.File; import java.util.List; -import java.util.Random; /** * Created by karim on 27.11.14. @@ -69,7 +67,7 @@ public class SongAdapter extends RecyclerView.Adapter { @Override public void onBindViewHolder(final ViewHolder holder, int position) { - if(getItemViewType(position) == SONG) { + if (getItemViewType(position) == SONG) { final Song song = dataSet.get(position - 1); holder.songTitle.setText(song.title); @@ -88,6 +86,7 @@ public class SongAdapter extends RecyclerView.Adapter { holder.albumArt.setPadding(48, 48, 48, 48); holder.albumArt.setColorFilter(accentColor); holder.albumArt.setImageResource(R.drawable.ic_shuffle_white_48dp); + holder.separator.setVisibility(View.VISIBLE); } } @@ -101,6 +100,7 @@ public class SongAdapter extends RecyclerView.Adapter { TextView songInfo; ImageView overflowButton; ImageView albumArt; + View separator; public ViewHolder(View itemView) { super(itemView); @@ -108,13 +108,14 @@ public class SongAdapter extends RecyclerView.Adapter { songInfo = (TextView) itemView.findViewById(R.id.song_info); albumArt = (ImageView) itemView.findViewById(R.id.album_art); overflowButton = (ImageView) itemView.findViewById(R.id.menu); + separator = itemView.findViewById(R.id.separator); + overflowButton.setOnClickListener(this); itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (getItemViewType() == SHUFFLE_BUTTON) { - MusicPlayerRemote.openQueue(dataSet, new Random().nextInt(dataSet.size()), true); - MusicPlayerRemote.forceSetShuffleMode(activity, MusicService.SHUFFLE_MODE_SHUFFLE); + MusicPlayerRemote.shuffleAllSongs(activity); } else { MusicPlayerRemote.openQueue(dataSet, getAdapterPosition() - 1, true); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/helper/MusicPlayerRemote.java b/app/src/main/java/com/kabouzeid/gramophone/helper/MusicPlayerRemote.java index bad323b4..5b74e7d0 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/helper/MusicPlayerRemote.java +++ b/app/src/main/java/com/kabouzeid/gramophone/helper/MusicPlayerRemote.java @@ -11,6 +11,7 @@ import android.widget.Toast; import com.kabouzeid.gramophone.App; import com.kabouzeid.gramophone.R; +import com.kabouzeid.gramophone.loader.SongLoader; import com.kabouzeid.gramophone.misc.AppKeys; import com.kabouzeid.gramophone.model.MusicRemoteEvent; import com.kabouzeid.gramophone.model.Song; @@ -20,6 +21,7 @@ import com.kabouzeid.gramophone.util.InternalStorageUtil; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.Random; /** * Created by karim on 29.11.14. @@ -233,6 +235,12 @@ public class MusicPlayerRemote { } } + public static void shuffleAllSongs(final Context context){ + List songs = SongLoader.getAllSongs(context); + MusicPlayerRemote.openQueue(songs, new Random().nextInt(songs.size()), true); + forceSetShuffleMode(context, MusicService.SHUFFLE_MODE_SHUFFLE); + } + public static void playNext(Song song) { if (musicService != null) { musicService.addSong(getPosition() + 1, song); diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java index c86ab624..aa828642 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java @@ -23,6 +23,7 @@ import com.kabouzeid.gramophone.App; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.adapter.songadapter.AlbumSongAdapter; import com.kabouzeid.gramophone.comparator.SongTrackNumberComparator; +import com.kabouzeid.gramophone.helper.MusicPlayerRemote; import com.kabouzeid.gramophone.loader.AlbumLoader; import com.kabouzeid.gramophone.loader.AlbumSongLoader; import com.kabouzeid.gramophone.misc.AppKeys; @@ -244,6 +245,9 @@ public class AlbumDetailActivity extends AbsFabActivity { public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); switch (id) { + case R.id.action_shuffle_all: + MusicPlayerRemote.shuffleAllSongs(this); + return true; case android.R.id.home: super.onBackPressed(); return true; diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java index ab1d6454..d249ea63 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java @@ -304,6 +304,9 @@ public class ArtistDetailActivity extends AbsFabActivity { public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); switch (id) { + case R.id.action_shuffle_all: + MusicPlayerRemote.shuffleAllSongs(this); + return true; case android.R.id.home: super.onBackPressed(); return true; diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java index fff1a648..6080b610 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java @@ -236,6 +236,9 @@ public class MainActivity extends AbsFabActivity } int id = item.getItemId(); switch (id) { + case R.id.action_shuffle_all: + MusicPlayerRemote.shuffleAllSongs(this); + return true; case R.id.action_new_playlist: CreatePlaylistDialogHelper.getDialog(this).show(); return true; diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MusicControllerActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MusicControllerActivity.java index 21a857f7..1bc4a60d 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MusicControllerActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MusicControllerActivity.java @@ -387,6 +387,9 @@ public class MusicControllerActivity extends AbsFabActivity { public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); switch (id) { + case R.id.action_shuffle_all: + MusicPlayerRemote.shuffleAllSongs(this); + return true; case R.id.action_settings: Toast.makeText(this, "This feature is not available yet", Toast.LENGTH_SHORT).show(); return true; diff --git a/app/src/main/res/layout/item_list_song.xml b/app/src/main/res/layout/item_list_song.xml index 9956b620..6ee972b6 100644 --- a/app/src/main/res/layout/item_list_song.xml +++ b/app/src/main/res/layout/item_list_song.xml @@ -1,50 +1,63 @@ - - - + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="wrap_content" + android:layout_height="wrap_content"> + android:layout_width="match_parent" + android:layout_height="72dp" + android:descendantFocusability="blocksDescendants" + android:orientation="horizontal" + android:paddingLeft="16dp"> - + - + android:layout_gravity="center" + android:layout_marginLeft="16dp" + android:layout_marginRight="16dp" + android:layout_weight="1" + android:orientation="vertical"> + + + + + + + - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_album_detail.xml b/app/src/main/res/menu/menu_album_detail.xml index 44242cdb..730e12b5 100644 --- a/app/src/main/res/menu/menu_album_detail.xml +++ b/app/src/main/res/menu/menu_album_detail.xml @@ -15,6 +15,12 @@ android:title="@string/action_playing_queue" app:showAsAction="never"/> + + + + + + + + + + +