summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Martinz <amartinz@shiftphones.com>2019-02-27 12:46:39 +0100
committerBruno Martins <bgcngm@gmail.com>2020-04-17 20:25:15 +0200
commitdaecf8f7313823a061e997c0cd9e9eb77dae0d74 (patch)
treeab854b5c62574c2eb5ab49107cb270685f16b503
parentbb1a94df20948cb07052ceb12d9e996bbdb9571f (diff)
downloadandroid_packages_apps_Eleven-daecf8f7313823a061e997c0cd9e9eb77dae0d74.tar.gz
android_packages_apps_Eleven-daecf8f7313823a061e997c0cd9e9eb77dae0d74.tar.bz2
android_packages_apps_Eleven-daecf8f7313823a061e997c0cd9e9eb77dae0d74.zip
AudioPlayer: convert headerbar into toolbar
Use a toolbar instead of a popup menu. Turn the "Add to playlist" button into a menu item as well and show an AlertDialog instead of a ContextMenu when pressing on it. When creating the "Add to playlist" dialog, do not add a "New playlist" item by default and instead turn it into a dialog action. Change-Id: Ie54f49ba422ec0ef15f9437b3a74abfd56782e65 Signed-off-by: Alexander Martinz <amartinz@shiftphones.com> Signed-off-by: Joey <joey@lineageos.org>
-rw-r--r--res/layout/audio_player_header_bar.xml54
-rw-r--r--res/menu/audio_player.xml11
-rw-r--r--src/org/lineageos/eleven/menu/CreateNewPlaylist.java2
-rw-r--r--src/org/lineageos/eleven/ui/fragments/AudioPlayerFragment.java276
-rw-r--r--src/org/lineageos/eleven/utils/MusicUtils.java29
-rw-r--r--src/org/lineageos/eleven/utils/PopupMenuHelper.java21
6 files changed, 151 insertions, 242 deletions
diff --git a/res/layout/audio_player_header_bar.xml b/res/layout/audio_player_header_bar.xml
index 75f5f4f..7934b10 100644
--- a/res/layout/audio_player_header_bar.xml
+++ b/res/layout/audio_player_header_bar.xml
@@ -13,56 +13,26 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-
-<RelativeLayout
+<androidx.appcompat.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
+ android:id="@+id/audio_player_header"
android:layout_width="match_parent"
- android:layout_height="?actionBarSize"
+ android:layout_height="?android:attr/actionBarSize"
android:background="@android:color/transparent"
android:elevation="@dimen/action_bar_elevation"
- android:orientation="horizontal"
- android:paddingBottom="2dp"
- android:paddingStart="@dimen/header_bar_padding_left"
- android:paddingTop="2dp"
+ android:theme="@style/ToolBarTheme"
+ app:popupTheme="@style/ToolBarPopupTheme"
tools:background="@color/blue_dark">
<LinearLayout
- android:id="@+id/header_bar_button_container"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentEnd="true"
- android:layout_centerVertical="true"
- android:orientation="horizontal">
-
- <ImageView
- android:id="@+id/header_bar_add_button"
- android:layout_width="@dimen/header_bar_custom_button_width"
- android:layout_height="@dimen/header_bar_button_height"
- android:layout_gravity="center_vertical"
- android:layout_weight="0"
- android:background="@drawable/selectable_background"
- android:scaleType="centerInside"
- android:src="@drawable/btn_add_to_playlist" />
-
- <ImageView
- android:id="@+id/header_bar_menu_button"
- android:layout_width="@dimen/header_bar_menu_button_width"
- android:layout_height="@dimen/header_bar_button_height"
- android:layout_gravity="center_vertical"
- android:layout_weight="0"
- android:background="@drawable/selectable_background"
- android:scaleType="centerInside"
- android:src="@drawable/menu_button_light" />
- </LinearLayout>
-
- <LinearLayout
android:id="@+id/header_bar_text_container"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentStart="true"
- android:layout_centerVertical="true"
- android:layout_toStartOf="@id/header_bar_button_container"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="1"
+ android:gravity="center_vertical"
android:orientation="vertical">
<TextView
@@ -89,4 +59,4 @@
android:textSize="@dimen/text_size_micro"
tools:text="Name of Artist" />
</LinearLayout>
-</RelativeLayout>
+</androidx.appcompat.widget.Toolbar>
diff --git a/res/menu/audio_player.xml b/res/menu/audio_player.xml
index 294810a..9cdb00a 100644
--- a/res/menu/audio_player.xml
+++ b/res/menu/audio_player.xml
@@ -15,10 +15,17 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<menu xmlns:app="http://schemas.android.com/apk/res-auto"
- xmlns:android="http://schemas.android.com/apk/res/android" >
+<menu
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto">
<item
+ android:id="@+id/menu_audio_player_add_to_playlist"
+ android:icon="@drawable/btn_add_to_playlist"
+ android:orderInCategory="40"
+ android:title="@string/add_to_playlist"
+ app:showAsAction="ifRoom" />
+ <item
android:id="@+id/menu_audio_player_equalizer"
android:orderInCategory="41"
android:title="@string/menu_equalizer"
diff --git a/src/org/lineageos/eleven/menu/CreateNewPlaylist.java b/src/org/lineageos/eleven/menu/CreateNewPlaylist.java
index 3eaced5..ebd467e 100644
--- a/src/org/lineageos/eleven/menu/CreateNewPlaylist.java
+++ b/src/org/lineageos/eleven/menu/CreateNewPlaylist.java
@@ -74,7 +74,7 @@ public class CreateNewPlaylist extends BasePlaylistDialog {
public void onSaveClick() {
final String playlistName = mPlaylist.getText().toString();
if (playlistName != null && playlistName.length() > 0) {
- final int playlistId = (int)MusicUtils.getIdForPlaylist(getActivity(),
+ final int playlistId = (int) MusicUtils.getIdForPlaylist(getActivity(),
playlistName);
if (playlistId >= 0) {
MusicUtils.clearPlaylist(getActivity(), playlistId);
diff --git a/src/org/lineageos/eleven/ui/fragments/AudioPlayerFragment.java b/src/org/lineageos/eleven/ui/fragments/AudioPlayerFragment.java
index 1cd4879..3b3f59d 100644
--- a/src/org/lineageos/eleven/ui/fragments/AudioPlayerFragment.java
+++ b/src/org/lineageos/eleven/ui/fragments/AudioPlayerFragment.java
@@ -16,13 +16,13 @@
*/
package org.lineageos.eleven.ui.fragments;
+import android.app.AlertDialog;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.ServiceConnection;
-import android.graphics.Outline;
import android.media.AudioManager;
import android.os.Bundle;
import android.os.Handler;
@@ -39,12 +39,11 @@ import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
-import android.view.ViewOutlineProvider;
-import android.widget.ImageView;
-import android.widget.PopupMenu;
import android.widget.TextView;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;
@@ -57,7 +56,6 @@ import org.lineageos.eleven.loaders.NowPlayingCursor;
import org.lineageos.eleven.loaders.QueueLoader;
import org.lineageos.eleven.menu.CreateNewPlaylist;
import org.lineageos.eleven.menu.DeleteDialog;
-import org.lineageos.eleven.menu.FragmentMenuItems;
import org.lineageos.eleven.ui.activities.HomeActivity;
import org.lineageos.eleven.utils.ElevenUtils;
import org.lineageos.eleven.utils.MusicUtils;
@@ -69,28 +67,22 @@ import org.lineageos.eleven.widgets.NoResultsContainer;
import org.lineageos.eleven.widgets.VisualizerView;
import java.lang.ref.WeakReference;
+import java.util.List;
public class AudioPlayerFragment extends Fragment implements ServiceConnection {
private static final String TAG = AudioPlayerFragment.class.getSimpleName();
- /**
- * Used to keep context menu items from bleeding into other fragments
- */
- private static final int GROUP_ID = 15;
+ private AlertDialog mAlertDialog;
// fragment view
private ViewGroup mRootView;
+ private Toolbar mPlayerToolBar;
+
// Header views
private TextView mSongTitle;
private TextView mArtistName;
- // Playlist Button
- private ImageView mAddToPlaylistButton;
-
- // Menu Button
- private ImageView mMenuButton;
-
// Message to refresh the time
private static final int REFRESH_TIME = 1;
@@ -115,9 +107,6 @@ public class AudioPlayerFragment extends Fragment implements ServiceConnection {
// Image cache
private ImageFetcher mImageFetcher;
- // popup menu for pressing the menu icon
- private PopupMenu mPopupMenu;
-
// Lyrics text view
private TextView mLyricsText;
@@ -142,14 +131,12 @@ public class AudioPlayerFragment extends Fragment implements ServiceConnection {
@Override
public View onCreateView(@NonNull final LayoutInflater inflater, final ViewGroup container,
- final Bundle savedInstanceState) {
+ final Bundle savedInstanceState) {
// The View for the fragment's UI
mRootView = (ViewGroup) inflater.inflate(R.layout.activity_player_fragment, container,
false);
- // Header title values
initHeaderBar();
-
initPlaybackControls();
mVisualizerView = mRootView.findViewById(R.id.visualizerView);
@@ -162,6 +149,107 @@ public class AudioPlayerFragment extends Fragment implements ServiceConnection {
}
@Override
+ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
+ super.onViewCreated(view, savedInstanceState);
+ setHasOptionsMenu(true);
+ }
+
+ @Override
+ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+ super.onCreateOptionsMenu(menu, inflater);
+
+ final Menu playerMenu = mPlayerToolBar.getMenu();
+ playerMenu.clear();
+
+ // Shuffle all
+ inflater.inflate(R.menu.shuffle_all, playerMenu);
+ if (MusicUtils.getQueueSize() > 0) {
+ // ringtone, and equalizer
+ inflater.inflate(R.menu.audio_player, playerMenu);
+
+ if (!NavUtils.hasEffectsPanel(getActivity())) {
+ playerMenu.removeItem(R.id.menu_audio_player_equalizer);
+ }
+
+ // save queue/clear queue
+ inflater.inflate(R.menu.queue, playerMenu);
+ }
+ // Settings
+ inflater.inflate(R.menu.activity_base, playerMenu);
+
+ final int playerMenuSize = playerMenu.size();
+ for (int i = 0; i < playerMenuSize; i++) {
+ playerMenu.getItem(i).setOnMenuItemClickListener(this::onOptionsItemSelected);
+ }
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case R.id.menu_audio_player_add_to_playlist: {
+ // save the current track id
+ mSelectedId = MusicUtils.getCurrentAudioId();
+ final List<String> menuItemList = MusicUtils.makePlaylist(getActivity());
+
+ final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+ builder.setTitle(R.string.add_to_playlist)
+ .setItems(menuItemList.toArray(new String[0]), (dialog, which) -> {
+ final long playListId = MusicUtils.getIdForPlaylist(getActivity(),
+ menuItemList.get(which));
+ MusicUtils.addToPlaylist(getActivity(), new long[]{mSelectedId},
+ playListId);
+ })
+ .setPositiveButton(R.string.new_playlist, (dialog, which) -> {
+ dialog.dismiss();
+ CreateNewPlaylist.getInstance(new long[]{mSelectedId})
+ .show(getFragmentManager(), "CreatePlaylist");
+ });
+ mAlertDialog = builder.show();
+ return true;
+ }
+ case R.id.menu_shuffle_all:
+ // Shuffle all the songs
+ MusicUtils.shuffleAll(getActivity());
+ return true;
+ case R.id.menu_audio_player_ringtone:
+ // Set the current track as a ringtone
+ MusicUtils.setRingtone(getActivity(), MusicUtils.getCurrentAudioId());
+ return true;
+ case R.id.menu_audio_player_equalizer:
+ // Sound effects
+ NavUtils.openEffectsPanel(getActivity(), HomeActivity.EQUALIZER);
+ return true;
+ case R.id.menu_settings:
+ // Settings
+ NavUtils.openSettings(getActivity());
+ return true;
+ case R.id.menu_audio_player_more_by_artist:
+ NavUtils.openArtistProfile(getActivity(), MusicUtils.getArtistName());
+ return true;
+ case R.id.menu_audio_player_delete:
+ // Delete current song
+ DeleteDialog.newInstance(MusicUtils.getTrackName(), new long[]{
+ MusicUtils.getCurrentAudioId()
+ }, null).show(getActivity().getSupportFragmentManager(), "DeleteDialog");
+ return true;
+ case R.id.menu_save_queue:
+ NowPlayingCursor queue = (NowPlayingCursor) QueueLoader
+ .makeQueueCursor(getActivity());
+ CreateNewPlaylist.getInstance(MusicUtils.getSongListForCursor(queue)).show(
+ getFragmentManager(), "CreatePlaylist");
+ queue.close();
+ return true;
+ case R.id.menu_clear_queue:
+ MusicUtils.clearQueue();
+ return true;
+ default:
+ break;
+ }
+
+ return super.onOptionsItemSelected(item);
+ }
+
+ @Override
public void onServiceConnected(final ComponentName name, final IBinder service) {
// Set the playback drawables
mMainPlaybackControls.updatePlaybackControls();
@@ -213,6 +301,10 @@ public class AudioPlayerFragment extends Fragment implements ServiceConnection {
// pause the update callback for the play pause progress button
mTimeHandler.removeMessages(REFRESH_TIME);
+ if (mAlertDialog != null) {
+ mAlertDialog.dismiss();
+ }
+
mImageFetcher.flush();
// Unbind from the service
@@ -231,44 +323,11 @@ public class AudioPlayerFragment extends Fragment implements ServiceConnection {
* Initializes the header bar
*/
private void initHeaderBar() {
- final View headerBar = mRootView.findViewById(R.id.audio_player_header);
- final int bottomActionBarHeight =
- getResources().getDimensionPixelSize(R.dimen.bottom_action_bar_height);
-
- headerBar.setOutlineProvider(new ViewOutlineProvider() {
- @Override
- public void getOutline(View view, Outline outline) {
- // since we only want the top and bottom shadows, pad the horizontal width
- // to hide the shadows. Can't seem to find a better way to do this
- int padWidth = (int)(0.2f * view.getWidth());
- outline.setRect(-padWidth, -bottomActionBarHeight, view.getWidth() + padWidth,
- view.getHeight());
- }
- });
+ mPlayerToolBar = mRootView.findViewById(R.id.audio_player_header);
// Title text
mSongTitle = mRootView.findViewById(R.id.header_bar_song_title);
mArtistName = mRootView.findViewById(R.id.header_bar_artist_title);
-
- // Setup the playlist button - add a click listener to show the context
- mAddToPlaylistButton = mRootView.findViewById(R.id.header_bar_add_button);
-
- // Create the context menu when requested
- mAddToPlaylistButton.setOnCreateContextMenuListener((menu, v, menuInfo) -> {
- MusicUtils.makePlaylistMenu(getActivity(), GROUP_ID, menu);
- menu.setHeaderTitle(R.string.add_to_playlist);
- });
-
- // add a click listener to show the context
- mAddToPlaylistButton.setOnClickListener(v -> {
- // save the current track id
- mSelectedId = MusicUtils.getCurrentAudioId();
- mAddToPlaylistButton.showContextMenu();
- });
-
- // Add the menu button
- mMenuButton = mRootView.findViewById(R.id.header_bar_menu_button);
- mMenuButton.setOnClickListener(v -> showPopupMenu());
}
/**
@@ -374,11 +433,9 @@ public class AudioPlayerFragment extends Fragment implements ServiceConnection {
if(queueSize == 0) {
mAlbumArtViewPager.setVisibility(View.GONE);
mQueueEmpty.showNoResults();
- mAddToPlaylistButton.setVisibility(View.GONE);
} else {
mAlbumArtViewPager.setVisibility(View.VISIBLE);
mQueueEmpty.hideAll();
- mAddToPlaylistButton.setVisibility(View.VISIBLE);
}
}
@@ -410,110 +467,6 @@ public class AudioPlayerFragment extends Fragment implements ServiceConnection {
return MusicUtils.UPDATE_FREQUENCY_MS;
}
- public void showPopupMenu() {
- // create the popup menu
- if (mPopupMenu == null) {
- mPopupMenu = new PopupMenu(getActivity(), mMenuButton);
- mPopupMenu.setOnMenuItemClickListener(this::onPopupMenuItemClick);
- }
-
- final Menu menu = mPopupMenu.getMenu();
- final MenuInflater inflater = mPopupMenu.getMenuInflater();
- menu.clear();
-
- // Shuffle all
- inflater.inflate(R.menu.shuffle_all, menu);
- if (MusicUtils.getQueueSize() > 0) {
- // ringtone, and equalizer
- inflater.inflate(R.menu.audio_player, menu);
-
- if (!NavUtils.hasEffectsPanel(getActivity())) {
- menu.removeItem(R.id.menu_audio_player_equalizer);
- }
-
- // save queue/clear queue
- inflater.inflate(R.menu.queue, menu);
- }
- // Settings
- inflater.inflate(R.menu.activity_base, menu);
-
- // show the popup
- mPopupMenu.show();
- }
-
- public boolean onPopupMenuItemClick(final MenuItem item) {
- switch (item.getItemId()) {
- case R.id.menu_shuffle_all:
- // Shuffle all the songs
- MusicUtils.shuffleAll(getActivity());
- return true;
- case R.id.menu_audio_player_ringtone:
- // Set the current track as a ringtone
- MusicUtils.setRingtone(getActivity(), MusicUtils.getCurrentAudioId());
- return true;
- case R.id.menu_audio_player_equalizer:
- // Sound effects
- NavUtils.openEffectsPanel(getActivity(), HomeActivity.EQUALIZER);
- return true;
- case R.id.menu_settings:
- // Settings
- NavUtils.openSettings(getActivity());
- return true;
- case R.id.menu_audio_player_more_by_artist:
- NavUtils.openArtistProfile(getActivity(), MusicUtils.getArtistName());
- return true;
- case R.id.menu_audio_player_delete:
- // Delete current song
- DeleteDialog.newInstance(MusicUtils.getTrackName(), new long[]{
- MusicUtils.getCurrentAudioId()
- }, null).show(getActivity().getSupportFragmentManager(), "DeleteDialog");
- return true;
- case R.id.menu_save_queue:
- NowPlayingCursor queue = (NowPlayingCursor) QueueLoader
- .makeQueueCursor(getActivity());
- CreateNewPlaylist.getInstance(MusicUtils.getSongListForCursor(queue)).show(
- getFragmentManager(), "CreatePlaylist");
- queue.close();
- return true;
- case R.id.menu_clear_queue:
- MusicUtils.clearQueue();
- return true;
- default:
- break;
- }
-
- return false;
- }
-
- public void dismissPopupMenu() {
- if (mPopupMenu != null) {
- mPopupMenu.dismiss();
- }
- }
-
- @Override
- public boolean onContextItemSelected(MenuItem item) {
- if (item.getGroupId() == GROUP_ID) {
- switch (item.getItemId()) {
- case FragmentMenuItems.NEW_PLAYLIST:
- CreateNewPlaylist.getInstance(new long[]{
- mSelectedId
- }).show(getFragmentManager(), "CreatePlaylist");
- return true;
- case FragmentMenuItems.PLAYLIST_SELECTED:
- final long mPlaylistId = item.getIntent().getLongExtra("playlist", 0);
- MusicUtils.addToPlaylist(getActivity(), new long[]{
- mSelectedId
- }, mPlaylistId);
- return true;
- default:
- break;
- }
- }
-
- return super.onContextItemSelected(item);
- }
-
public void onLyrics(String lyrics) {
if (TextUtils.isEmpty(lyrics)
|| !PreferenceUtils.getInstance(getActivity()).getShowLyrics()) {
@@ -606,7 +559,6 @@ public class AudioPlayerFragment extends Fragment implements ServiceConnection {
// Current info
audioPlayerFragment.updateNowPlayingInfo();
- audioPlayerFragment.dismissPopupMenu();
break;
case MusicPlaybackService.PLAYSTATE_CHANGED:
audioPlayerFragment.mMainPlaybackControls.updatePlayPauseState();
diff --git a/src/org/lineageos/eleven/utils/MusicUtils.java b/src/org/lineageos/eleven/utils/MusicUtils.java
index d409fc7..1dacd5d 100644
--- a/src/org/lineageos/eleven/utils/MusicUtils.java
+++ b/src/org/lineageos/eleven/utils/MusicUtils.java
@@ -48,6 +48,7 @@ import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.WorkerThread;
+import org.lineageos.eleven.BuildConfig;
import org.lineageos.eleven.Config.IdType;
import org.lineageos.eleven.Config.SmartPlaylistType;
import org.lineageos.eleven.IElevenService;
@@ -1006,8 +1007,11 @@ public final class MusicUtils {
* @return The ID for a playlist.
*/
public static long getIdForPlaylist(final Context context, final String name) {
- try (Cursor cursor = context.getContentResolver().query(
- Playlists.EXTERNAL_CONTENT_URI,
+ if (BuildConfig.DEBUG) {
+ Log.d(TAG, "getIdForPlaylist(" + name + ")");
+ }
+
+ try (Cursor cursor = context.getContentResolver().query(Playlists.EXTERNAL_CONTENT_URI,
new String[]{BaseColumns._ID}, PlaylistsColumns.NAME + "=?",
new String[]{name}, PlaylistsColumns.NAME)) {
if (cursor != null) {
@@ -1504,27 +1508,6 @@ public final class MusicUtils {
}
/**
- * Creates a sub menu used to add items to a new playlist or an existing
- * one.
- *
- * @param context The {@link Context} to use.
- * @param groupId The group Id of the menu.
- * @param menu The {@link Menu} to add to.
- */
- public static void makePlaylistMenu(final Context context, final int groupId,
- final Menu menu) {
- menu.clear();
-
- final List<String> menuItemList = makePlaylist(context);
- for (final String name : menuItemList) {
- final Intent intent = new Intent();
- intent.putExtra("playlist", getIdForPlaylist(context, name));
- menu.add(groupId, FragmentMenuItems.PLAYLIST_SELECTED, Menu.NONE, name)
- .setIntent(intent);
- }
- }
-
- /**
* Called when one of the lists should refresh or requery.
*/
public static void refresh() {
diff --git a/src/org/lineageos/eleven/utils/PopupMenuHelper.java b/src/org/lineageos/eleven/utils/PopupMenuHelper.java
index 1cc6f72..05694d1 100644
--- a/src/org/lineageos/eleven/utils/PopupMenuHelper.java
+++ b/src/org/lineageos/eleven/utils/PopupMenuHelper.java
@@ -340,18 +340,15 @@ public abstract class PopupMenuHelper implements PopupMenu.OnMenuItemClickListen
final AlertDialog.Builder builder = new AlertDialog.Builder(mActivity);
builder.setTitle(R.string.add_to_playlist);
final List<String> menuItemList = MusicUtils.makePlaylist(mActivity);
- builder.setItems(menuItemList.toArray(new String[0]), new DialogInterface.OnClickListener() {
- @Override public void onClick(DialogInterface dialog, int which) {
- if (which == 0) {
- CreateNewPlaylist.getInstance(getIdList()).show(
- mFragmentManager, "CreatePlaylist");
- return;
- }
-
- final String name = menuItemList.get(which);
- final long playListId = MusicUtils.getIdForPlaylist(mActivity, name);
- MusicUtils.addToPlaylist(mActivity, getIdList(), playListId);
- }
+ builder.setItems(menuItemList.toArray(new String[0]), (dialog, which) -> {
+ final String name = menuItemList.get(which);
+ final long playListId = MusicUtils.getIdForPlaylist(mActivity, name);
+ MusicUtils.addToPlaylist(mActivity, getIdList(), playListId);
+ });
+ builder.setPositiveButton(R.string.new_playlist, (dialog, which) -> {
+ dialog.dismiss();
+ CreateNewPlaylist.getInstance(getIdList())
+ .show(mFragmentManager, "CreatePlaylist");
});
builder.show();
return true;