Minor Bugfixes and playing queue actions
This commit is contained in:
parent
0de409a459
commit
f7bc62a2df
17 changed files with 138 additions and 44 deletions
|
|
@ -35,7 +35,7 @@ public class PlayingQueueAdapter extends ArrayAdapter<Song> {
|
|||
}
|
||||
|
||||
@Override
|
||||
public View getView(int position, View convertView, ViewGroup parent) {
|
||||
public View getView(final int position, View convertView, ViewGroup parent) {
|
||||
final Song song = getItem(position);
|
||||
if (convertView == null) {
|
||||
convertView = LayoutInflater.from(activity).inflate(R.layout.item_list_playlist, parent, false);
|
||||
|
|
@ -57,11 +57,19 @@ public class PlayingQueueAdapter extends ArrayAdapter<Song> {
|
|||
@Override
|
||||
public void onClick(final View v) {
|
||||
PopupMenu popupMenu = new PopupMenu(activity, v);
|
||||
popupMenu.inflate(R.menu.menu_song);
|
||||
popupMenu.inflate(R.menu.menu_playing_queue_song);
|
||||
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
|
||||
@Override
|
||||
public boolean onMenuItemClick(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case R.id.action_remove_from_playing_queue:
|
||||
MusicPlayerRemote.removeFromQueue(position);
|
||||
notifyDataSetChanged();
|
||||
return true;
|
||||
case R.id.action_play_next:
|
||||
MusicPlayerRemote.playNext(song);
|
||||
notifyDataSetChanged();
|
||||
return true;
|
||||
case R.id.action_tag_editor:
|
||||
Intent intent = new Intent(activity, SongTagEditorActivity.class);
|
||||
intent.putExtra(AppKeys.E_ID, song.id);
|
||||
|
|
@ -76,7 +84,7 @@ public class PlayingQueueAdapter extends ArrayAdapter<Song> {
|
|||
NavigationUtil.goToAlbum(activity, song.albumId, null);
|
||||
return true;
|
||||
case R.id.action_go_to_artist:
|
||||
NavigationUtil.goToAlbum(activity, song.artistId, null);
|
||||
NavigationUtil.goToArtist(activity, song.artistId, null);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -88,6 +88,11 @@ public class AlbumSongAdapter extends RecyclerView.Adapter<AlbumSongAdapter.View
|
|||
@Override
|
||||
public boolean onMenuItemClick(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case R.id.action_play_next:
|
||||
MusicPlayerRemote.playNext(dataSet.get(getPosition()));
|
||||
return true;
|
||||
case R.id.action_add_to_current_playing:
|
||||
MusicPlayerRemote.enqueue(dataSet.get(getPosition()));
|
||||
case R.id.action_tag_editor:
|
||||
Intent intent = new Intent(activity, SongTagEditorActivity.class);
|
||||
intent.putExtra(AppKeys.E_ID, dataSet.get(getPosition()).id);
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import android.widget.PopupMenu;
|
|||
import android.widget.TextView;
|
||||
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
|
||||
import com.kabouzeid.gramophone.helper.SongDetailDialogHelper;
|
||||
import com.kabouzeid.gramophone.loader.SongFilePathLoader;
|
||||
import com.kabouzeid.gramophone.misc.AppKeys;
|
||||
|
|
@ -66,6 +67,12 @@ public class ArtistSongAdapter extends ArrayAdapter<Song> {
|
|||
@Override
|
||||
public boolean onMenuItemClick(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case R.id.action_play_next:
|
||||
MusicPlayerRemote.playNext(song);
|
||||
return true;
|
||||
case R.id.action_add_to_current_playing:
|
||||
MusicPlayerRemote.enqueue(song);
|
||||
return true;
|
||||
case R.id.action_tag_editor:
|
||||
Intent intent = new Intent(activity, SongTagEditorActivity.class);
|
||||
intent.putExtra(AppKeys.E_ID, song.id);
|
||||
|
|
|
|||
|
|
@ -93,6 +93,12 @@ public class SongAdapter extends RecyclerView.Adapter<SongAdapter.ViewHolder> {
|
|||
@Override
|
||||
public boolean onMenuItemClick(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case R.id.action_play_next:
|
||||
MusicPlayerRemote.playNext(dataSet.get(getPosition()));
|
||||
return true;
|
||||
case R.id.action_add_to_current_playing:
|
||||
MusicPlayerRemote.enqueue(dataSet.get(getPosition()));
|
||||
return true;
|
||||
case R.id.action_tag_editor:
|
||||
Intent intent = new Intent(activity, SongTagEditorActivity.class);
|
||||
intent.putExtra(AppKeys.E_ID, dataSet.get(getPosition()).id);
|
||||
|
|
|
|||
|
|
@ -7,8 +7,10 @@ import android.content.ServiceConnection;
|
|||
import android.os.IBinder;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.util.Log;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.kabouzeid.gramophone.App;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.misc.AppKeys;
|
||||
import com.kabouzeid.gramophone.model.MusicRemoteEvent;
|
||||
import com.kabouzeid.gramophone.model.Song;
|
||||
|
|
@ -214,16 +216,29 @@ public class MusicPlayerRemote {
|
|||
return false;
|
||||
}
|
||||
|
||||
public static void playNext(Song song) {
|
||||
if (musicService != null) {
|
||||
musicService.addSong(getPosition() + 1, song);
|
||||
Toast.makeText(musicService, musicService.getResources().getString(R.string.added_title_to_playing_queue), Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
|
||||
public static void enqueue(Song song) {
|
||||
if (musicService != null) {
|
||||
musicService.addSong(song);
|
||||
Toast.makeText(musicService, musicService.getResources().getString(R.string.added_title_to_playing_queue), Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
|
||||
public static void removeFromQueue(int position) {
|
||||
if (musicService != null) {
|
||||
musicService.removeSong(position);
|
||||
}
|
||||
}
|
||||
|
||||
public static void moveSong(int from, int to) {
|
||||
final int currentPosition = getPosition();
|
||||
Song songToMove = getPlayingQueue().remove(from);
|
||||
getPlayingQueue().add(to, songToMove);
|
||||
if (from > currentPosition && to <= currentPosition) {
|
||||
setPosition(getPosition() + 1);
|
||||
} else if (from < currentPosition && to >= currentPosition) {
|
||||
setPosition(getPosition() - 1);
|
||||
} else if (from == currentPosition) {
|
||||
setPosition(to);
|
||||
if(musicService != null){
|
||||
musicService.moveSong(from, to);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -477,6 +477,46 @@ public class MusicService extends Service implements MediaPlayer.OnPreparedListe
|
|||
saveState();
|
||||
}
|
||||
|
||||
public void addSong(int position, Song song){
|
||||
playingQueue.add(position, song);
|
||||
originalPlayingQueue.add(position, song);
|
||||
saveState();
|
||||
}
|
||||
|
||||
public void addSong(Song song){
|
||||
playingQueue.add(song);
|
||||
originalPlayingQueue.add(song);
|
||||
saveState();
|
||||
}
|
||||
|
||||
public void removeSong(int position){
|
||||
if(getShuffleMode() == SHUFFLE_MODE_NONE){
|
||||
playingQueue.remove(position);
|
||||
originalPlayingQueue.remove(position);
|
||||
} else {
|
||||
originalPlayingQueue.remove(playingQueue.remove(position));
|
||||
}
|
||||
saveState();
|
||||
}
|
||||
|
||||
public void moveSong(int from, int to) {
|
||||
final int currentPosition = getPosition();
|
||||
Song songToMove = playingQueue.remove(from);
|
||||
playingQueue.add(to, songToMove);
|
||||
if(getShuffleMode() == SHUFFLE_MODE_NONE) {
|
||||
Song tmpSong = originalPlayingQueue.remove(from);
|
||||
originalPlayingQueue.add(to, tmpSong);
|
||||
}
|
||||
if (from > currentPosition && to <= currentPosition) {
|
||||
setPosition(getPosition() + 1);
|
||||
} else if (from < currentPosition && to >= currentPosition) {
|
||||
setPosition(getPosition() - 1);
|
||||
} else if (from == currentPosition) {
|
||||
setPosition(to);
|
||||
}
|
||||
saveState();
|
||||
}
|
||||
|
||||
public long getCurrentSongId() {
|
||||
return currentSongId;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import android.graphics.Bitmap;
|
|||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.util.Pair;
|
||||
import android.support.v7.graphics.Palette;
|
||||
import android.support.v7.widget.GridLayoutManager;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
|
|
@ -259,6 +260,9 @@ public class AlbumDetailActivity extends AbsFabActivity {
|
|||
case android.R.id.home:
|
||||
super.onBackPressed();
|
||||
return true;
|
||||
case R.id.action_playing_queue:
|
||||
NavigationUtil.openPlayingQueueDialog(this);
|
||||
return true;
|
||||
case R.id.action_settings:
|
||||
return true;
|
||||
case R.id.action_current_playing:
|
||||
|
|
@ -270,7 +274,9 @@ public class AlbumDetailActivity extends AbsFabActivity {
|
|||
startActivity(intent);
|
||||
return true;
|
||||
case R.id.action_go_to_artist:
|
||||
NavigationUtil.goToArtist(this, album.artistId, null);
|
||||
Pair[] artistPairs = null;
|
||||
artistPairs = getSharedViewsWithFab(artistPairs);
|
||||
NavigationUtil.goToArtist(this, album.artistId, artistPairs);
|
||||
return true;
|
||||
}
|
||||
return super.onOptionsItemSelected(item);
|
||||
|
|
|
|||
|
|
@ -312,6 +312,9 @@ public class ArtistDetailActivity extends AbsFabActivity {
|
|||
case android.R.id.home:
|
||||
super.onBackPressed();
|
||||
return true;
|
||||
case R.id.action_playing_queue:
|
||||
NavigationUtil.openPlayingQueueDialog(this);
|
||||
return true;
|
||||
case R.id.action_biography:
|
||||
if(biography != null){
|
||||
getBiographyDialog().show();
|
||||
|
|
|
|||
|
|
@ -240,12 +240,7 @@ public class MainActivity extends AbsFabActivity
|
|||
NavigationUtil.openCurrentPlayingIfPossible(this, getSharedViewsWithFab(null));
|
||||
return true;
|
||||
case R.id.action_playing_queue:
|
||||
final MaterialDialog materialDialog = PlayingQueueDialogHelper.getDialog(this);
|
||||
if (materialDialog != null) {
|
||||
materialDialog.show();
|
||||
} else {
|
||||
Toast.makeText(this, getResources().getString(R.string.nothing_playing), Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
NavigationUtil.openPlayingQueueDialog(this);
|
||||
return true;
|
||||
}
|
||||
return super.onOptionsItemSelected(item);
|
||||
|
|
|
|||
|
|
@ -392,12 +392,7 @@ public class MusicControllerActivity extends AbsFabActivity {
|
|||
super.onBackPressed();
|
||||
return true;
|
||||
case R.id.action_playing_queue:
|
||||
final MaterialDialog materialDialog = PlayingQueueDialogHelper.getDialog(this);
|
||||
if (materialDialog != null) {
|
||||
materialDialog.show();
|
||||
} else {
|
||||
Toast.makeText(this, getResources().getString(R.string.nothing_playing), Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
NavigationUtil.openPlayingQueueDialog(this);
|
||||
return true;
|
||||
case R.id.action_tag_editor:
|
||||
Intent intent = new Intent(this, SongTagEditorActivity.class);
|
||||
|
|
@ -410,10 +405,10 @@ public class MusicControllerActivity extends AbsFabActivity {
|
|||
SongDetailDialogHelper.getDialog(this, songFile).show();
|
||||
return true;
|
||||
case R.id.action_go_to_album:
|
||||
NavigationUtil.goToAlbum(this, song.albumId, null);
|
||||
NavigationUtil.goToAlbum(this, song.albumId, getSharedViewsWithFab(null));
|
||||
return true;
|
||||
case R.id.action_go_to_artist:
|
||||
NavigationUtil.goToAlbum(this, song.artistId, null);
|
||||
NavigationUtil.goToArtist(this, song.artistId, getSharedViewsWithFab(null));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package com.kabouzeid.gramophone.ui.fragments.mainactivityfragments;
|
|||
|
||||
import android.app.Fragment;
|
||||
import android.os.Build;
|
||||
import android.view.ViewConfiguration;
|
||||
|
||||
import com.kabouzeid.gramophone.App;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
|
|
|
|||
|
|
@ -7,8 +7,10 @@ import android.support.v4.app.ActivityOptionsCompat;
|
|||
import android.support.v4.util.Pair;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.afollestad.materialdialogs.MaterialDialog;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
|
||||
import com.kabouzeid.gramophone.helper.PlayingQueueDialogHelper;
|
||||
import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble;
|
||||
import com.kabouzeid.gramophone.misc.AppKeys;
|
||||
import com.kabouzeid.gramophone.ui.activities.AlbumDetailActivity;
|
||||
|
|
@ -20,7 +22,7 @@ import com.kabouzeid.gramophone.ui.activities.MusicControllerActivity;
|
|||
*/
|
||||
public class NavigationUtil {
|
||||
public static void goToArtist(final Activity activity, final int artistId, final Pair[] sharedViews) {
|
||||
if(activity instanceof ArtistDetailActivity){
|
||||
if (activity instanceof ArtistDetailActivity) {
|
||||
return;
|
||||
}
|
||||
if ((activity instanceof KabViewsDisableAble && ((KabViewsDisableAble) activity).areViewsEnabled()) || !(activity instanceof KabViewsDisableAble)) {
|
||||
|
|
@ -40,7 +42,7 @@ public class NavigationUtil {
|
|||
}
|
||||
|
||||
public static void goToAlbum(final Activity activity, final int albumId, final Pair[] sharedViews) {
|
||||
if(activity instanceof AlbumDetailActivity){
|
||||
if (activity instanceof AlbumDetailActivity) {
|
||||
return;
|
||||
}
|
||||
if ((activity instanceof KabViewsDisableAble && ((KabViewsDisableAble) activity).areViewsEnabled()) || !(activity instanceof KabViewsDisableAble)) {
|
||||
|
|
@ -60,7 +62,7 @@ public class NavigationUtil {
|
|||
}
|
||||
|
||||
public static void openCurrentPlayingIfPossible(final Activity activity, final Pair[] sharedViews) {
|
||||
if (activity instanceof MusicControllerActivity){
|
||||
if (activity instanceof MusicControllerActivity) {
|
||||
activity.onBackPressed();
|
||||
return;
|
||||
}
|
||||
|
|
@ -82,4 +84,13 @@ public class NavigationUtil {
|
|||
Toast.makeText(activity, activity.getResources().getString(R.string.nothing_playing), Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
|
||||
public static void openPlayingQueueDialog(final Activity activity) {
|
||||
final MaterialDialog materialDialog = PlayingQueueDialogHelper.getDialog(activity);
|
||||
if (materialDialog != null) {
|
||||
materialDialog.show();
|
||||
} else {
|
||||
Toast.makeText(activity, activity.getResources().getString(R.string.nothing_playing), Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ package com.kabouzeid.gramophone.util;
|
|||
import android.annotation.TargetApi;
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.TypedArray;
|
||||
import android.database.Cursor;
|
||||
|
|
@ -13,22 +12,13 @@ import android.net.NetworkInfo;
|
|||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.provider.MediaStore;
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
import android.support.v4.app.ActivityOptionsCompat;
|
||||
import android.support.v4.util.Pair;
|
||||
import android.util.TypedValue;
|
||||
import android.view.View;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
|
||||
import com.kabouzeid.gramophone.misc.AppKeys;
|
||||
import com.kabouzeid.gramophone.ui.activities.AlbumDetailActivity;
|
||||
import com.kabouzeid.gramophone.ui.activities.ArtistDetailActivity;
|
||||
import com.kabouzeid.gramophone.ui.activities.MusicControllerActivity;
|
||||
|
||||
/**
|
||||
* Created by karim on 12.12.14.
|
||||
|
|
|
|||
|
|
@ -9,6 +9,12 @@
|
|||
android:title="@string/action_current_playing"
|
||||
app:showAsAction="ifRoom"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/action_playing_queue"
|
||||
android:icon="@drawable/ic_queue_music_white_24dp"
|
||||
android:title="@string/action_playing_queue"
|
||||
app:showAsAction="never"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/action_go_to_artist"
|
||||
android:title="@string/action_go_to_artist"
|
||||
|
|
|
|||
|
|
@ -9,6 +9,12 @@
|
|||
android:title="@string/action_current_playing"
|
||||
app:showAsAction="ifRoom"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/action_playing_queue"
|
||||
android:icon="@drawable/ic_queue_music_white_24dp"
|
||||
android:title="@string/action_playing_queue"
|
||||
app:showAsAction="never"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/action_biography"
|
||||
android:title="@string/biography"
|
||||
|
|
|
|||
|
|
@ -9,10 +9,7 @@
|
|||
android:id="@+id/action_remove_from_playing_queue"
|
||||
android:title="@string/action_remove_from_playing_queue"
|
||||
app:showAsAction="never"/>
|
||||
<item
|
||||
android:id="@+id/action_add_to_current_playing"
|
||||
android:title="@string/action_add_to_playing_queue"
|
||||
app:showAsAction="never"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/action_add_to_playlist"
|
||||
android:title="@string/action_add_to_playlist"
|
||||
|
|
|
|||
|
|
@ -71,5 +71,8 @@
|
|||
<string name="updated_artist_image_for">Updated artist image for</string>
|
||||
<string name="updating">Updating…</string>
|
||||
<string name="loading">Loading…</string>
|
||||
<string name="added_title_to_playing_queue">Added 1 title to the playing queue.</string>
|
||||
<string name="added_titles_to_playing_queue_1">Added </string>
|
||||
<string name="added_titles_to_playing_queue_2"> titles to the playing queue.</string>
|
||||
|
||||
</resources>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue