From 00e3724ab4924527ee88462bbf5664d30f756118 Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Mon, 23 Mar 2015 22:40:51 +0100 Subject: [PATCH] Code rearrange and delete songs --- .../gramophone/adapter/AlbumAdapter.java | 37 ++++++++++++-- .../gramophone/adapter/ArtistAdapter.java | 35 ++++++++++++- .../gramophone/adapter/PlaylistAdapter.java | 35 ++++++++++++- .../adapter/songadapter/SongAdapter.java | 51 +++++++++++++++---- .../helper/DeleteSongsDialogHelper.java | 46 +++++++++++++++++ .../gramophone/service/MusicService.java | 23 +++++---- .../ui/activities/base/AbsFabActivity.java | 10 +++- .../AbsMainActivityFragment.java | 2 - .../AlbumViewFragment.java | 9 +--- .../ArtistViewFragment.java | 9 +--- .../PlaylistViewFragment.java | 36 ++----------- .../SongViewFragment.java | 9 +--- .../kabouzeid/gramophone/util/MusicUtil.java | 8 +-- .../res/layout/item_grid_artist_album.xml | 1 + app/src/main/res/values/strings.xml | 3 ++ 15 files changed, 223 insertions(+), 91 deletions(-) create mode 100644 app/src/main/java/com/kabouzeid/gramophone/helper/DeleteSongsDialogHelper.java diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/AlbumAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/AlbumAdapter.java index eaa57199..cb542bfe 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/AlbumAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/AlbumAdapter.java @@ -12,13 +12,17 @@ import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; +import com.kabouzeid.gramophone.App; import com.kabouzeid.gramophone.R; +import com.kabouzeid.gramophone.loader.AlbumLoader; import com.kabouzeid.gramophone.model.Album; +import com.kabouzeid.gramophone.model.DataBaseChangedEvent; import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity; import com.kabouzeid.gramophone.util.MusicUtil; import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.Util; import com.kabouzeid.gramophone.util.ViewUtil; +import com.squareup.otto.Subscribe; import com.squareup.picasso.Callback; import com.squareup.picasso.Picasso; @@ -103,11 +107,15 @@ public class AlbumAdapter extends RecyclerView.Adapter } } - public AlbumAdapter(Activity activity, List objects) { + public AlbumAdapter(Activity activity) { this.activity = activity; - dataSet = objects; - + //TODO shared prefs usePalette = true; + loadDataSet(); + } + + private void loadDataSet() { + dataSet = AlbumLoader.getAllAlbums(activity); } private void applyPalette(Bitmap bitmap, final TextView title, final TextView artist, final View footer) { @@ -139,4 +147,27 @@ public class AlbumAdapter extends RecyclerView.Adapter int defaultBarColor = activity.getResources().getColor(R.color.materialmusic_default_bar_color); footer.setBackgroundColor(defaultBarColor); } + + @Override + public void onDetachedFromRecyclerView(RecyclerView recyclerView) { + super.onDetachedFromRecyclerView(recyclerView); + App.bus.unregister(this); + } + + @Override + public void onAttachedToRecyclerView(RecyclerView recyclerView) { + super.onAttachedToRecyclerView(recyclerView); + App.bus.register(this); + } + + @Subscribe + public void onDataBaseEvent(DataBaseChangedEvent event) { + switch (event.getAction()) { + case DataBaseChangedEvent.ALBUMS_CHANGED: + case DataBaseChangedEvent.DATABASE_CHANGED: + loadDataSet(); + notifyDataSetChanged(); + break; + } + } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/ArtistAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/ArtistAdapter.java index 84583d03..9fb3df38 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/ArtistAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/ArtistAdapter.java @@ -9,11 +9,15 @@ import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; +import com.kabouzeid.gramophone.App; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.lastfm.artist.LastFMArtistThumbnailUrlLoader; +import com.kabouzeid.gramophone.loader.ArtistLoader; import com.kabouzeid.gramophone.model.Artist; +import com.kabouzeid.gramophone.model.DataBaseChangedEvent; import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity; import com.kabouzeid.gramophone.util.NavigationUtil; +import com.squareup.otto.Subscribe; import com.squareup.picasso.Picasso; import java.util.List; @@ -25,9 +29,13 @@ public class ArtistAdapter extends RecyclerView.Adapter dataSet; - public ArtistAdapter(Activity activity, List objects) { + public ArtistAdapter(Activity activity) { this.activity = activity; - dataSet = objects; + loadDataSet(); + } + + private void loadDataSet() { + dataSet = ArtistLoader.getAllArtists(activity); } @Override @@ -84,4 +92,27 @@ public class ArtistAdapter extends RecyclerView.Adapter dataSet; - public PlaylistAdapter(Activity activity, List objects) { + public PlaylistAdapter(Activity activity) { this.activity = activity; - dataSet = objects; + loadDataSet(); + } + + private void loadDataSet() { + dataSet = PlaylistLoader.getAllPlaylists(activity); } @Override @@ -90,4 +98,27 @@ public class PlaylistAdapter extends RecyclerView.Adapter { protected Activity activity; protected List dataSet; - public SongAdapter(Activity activity, List objects) { + public SongAdapter(Activity activity) { this.activity = activity; - dataSet = objects; + loadDataSet(); + } + + private void loadDataSet() { + dataSet = SongLoader.getAllSongs(activity); } @Override @@ -96,24 +104,24 @@ public class SongAdapter extends RecyclerView.Adapter { public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { case R.id.action_delete_from_disk: - Toast.makeText(activity, "This feature is not available yet", Toast.LENGTH_SHORT).show(); + DeleteSongsDialogHelper.getDialog(activity, dataSet.get(getAdapterPosition())).show(); return true; case R.id.action_add_to_playlist: AddToPlaylistDialogHelper.getDialog(activity, dataSet.get(getAdapterPosition())).show(); return true; case R.id.action_play_next: - MusicPlayerRemote.playNext(dataSet.get(getPosition())); + MusicPlayerRemote.playNext(dataSet.get(getAdapterPosition())); return true; case R.id.action_add_to_current_playing: - MusicPlayerRemote.enqueue(dataSet.get(getPosition())); + MusicPlayerRemote.enqueue(dataSet.get(getAdapterPosition())); return true; case R.id.action_tag_editor: Intent intent = new Intent(activity, SongTagEditorActivity.class); - intent.putExtra(AppKeys.E_ID, dataSet.get(getPosition()).id); + intent.putExtra(AppKeys.E_ID, dataSet.get(getAdapterPosition()).id); activity.startActivity(intent); return true; case R.id.action_details: - String songFilePath = SongFilePathLoader.getSongFilePath(activity, dataSet.get(getPosition()).id); + String songFilePath = SongFilePathLoader.getSongFilePath(activity, dataSet.get(getAdapterPosition()).id); File songFile = new File(songFilePath); SongDetailDialogHelper.getDialog(activity, songFile).show(); return true; @@ -123,13 +131,13 @@ public class SongAdapter extends RecyclerView.Adapter { }; if (activity instanceof AbsFabActivity) albumPairs = ((AbsFabActivity) activity).getSharedViewsWithFab(albumPairs); - NavigationUtil.goToAlbum(activity, dataSet.get(getPosition()).albumId, albumPairs); + NavigationUtil.goToAlbum(activity, dataSet.get(getAdapterPosition()).albumId, albumPairs); return true; case R.id.action_go_to_artist: Pair[] artistPairs = null; if (activity instanceof AbsFabActivity) artistPairs = ((AbsFabActivity) activity).getSharedViewsWithFab(artistPairs); - NavigationUtil.goToArtist(activity, dataSet.get(getPosition()).artistId, artistPairs); + NavigationUtil.goToArtist(activity, dataSet.get(getAdapterPosition()).artistId, artistPairs); return true; } return false; @@ -138,4 +146,27 @@ public class SongAdapter extends RecyclerView.Adapter { popupMenu.show(); } } + + @Override + public void onDetachedFromRecyclerView(RecyclerView recyclerView) { + super.onDetachedFromRecyclerView(recyclerView); + App.bus.unregister(this); + } + + @Override + public void onAttachedToRecyclerView(RecyclerView recyclerView) { + super.onAttachedToRecyclerView(recyclerView); + App.bus.register(this); + } + + @Subscribe + public void onDataBaseEvent(DataBaseChangedEvent event) { + switch (event.getAction()) { + case DataBaseChangedEvent.SONGS_CHANGED: + case DataBaseChangedEvent.DATABASE_CHANGED: + loadDataSet(); + notifyDataSetChanged(); + break; + } + } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/helper/DeleteSongsDialogHelper.java b/app/src/main/java/com/kabouzeid/gramophone/helper/DeleteSongsDialogHelper.java new file mode 100644 index 00000000..3a812d67 --- /dev/null +++ b/app/src/main/java/com/kabouzeid/gramophone/helper/DeleteSongsDialogHelper.java @@ -0,0 +1,46 @@ +package com.kabouzeid.gramophone.helper; + +import android.content.Context; + +import com.afollestad.materialdialogs.MaterialDialog; +import com.kabouzeid.gramophone.R; +import com.kabouzeid.gramophone.model.Song; +import com.kabouzeid.gramophone.util.MusicUtil; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by karim on 23.03.15. + */ +public class DeleteSongsDialogHelper { + public static MaterialDialog getDialog(final Context context, final Song song) { + List tmpList = new ArrayList<>(); + tmpList.add(song); + return getDialog(context, tmpList); + } + + public static MaterialDialog getDialog(final Context context, final List songs) { + String title = context.getResources().getString(R.string.delete_songs_1); + title = songs.size() > 1 ? title + songs.size() + context.getResources().getString(R.string.delete_songs_2) : title + songs.get(0).title + "?"; + return new MaterialDialog.Builder(context) + .title(title) + .content(context.getResources().getString(R.string.delete_warning)) + .positiveText(context.getResources().getString(R.string.ok)) + .negativeText(context.getResources().getString(R.string.cancel)) + .callback(new MaterialDialog.ButtonCallback() { + @Override + public void onPositive(MaterialDialog dialog) { + super.onPositive(dialog); + dialog.dismiss(); + MusicUtil.deleteTracks(context, songs); + } + + @Override + public void onNegative(MaterialDialog dialog) { + super.onNegative(dialog); + dialog.dismiss(); + } + }).build(); + } +} diff --git a/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java b/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java index 6601beae..3d941ab9 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java +++ b/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java @@ -477,20 +477,20 @@ public class MusicService extends Service implements MediaPlayer.OnPreparedListe saveState(); } - public void addSong(int position, Song song){ + public void addSong(int position, Song song) { playingQueue.add(position, song); originalPlayingQueue.add(position, song); saveState(); } - public void addSong(Song song){ + public void addSong(Song song) { playingQueue.add(song); originalPlayingQueue.add(song); saveState(); } - public void removeSong(int position){ - if(getShuffleMode() == SHUFFLE_MODE_NONE){ + public void removeSong(int position) { + if (getShuffleMode() == SHUFFLE_MODE_NONE) { playingQueue.remove(position); originalPlayingQueue.remove(position); } else { @@ -499,12 +499,15 @@ public class MusicService extends Service implements MediaPlayer.OnPreparedListe saveState(); } - public void removeSong(Song song){ - while (playingQueue.contains(song)){ - playingQueue.remove(song); + public void removeSong(Song song) { + for (int i = 0; i < playingQueue.size(); i++) { + if (playingQueue.get(i).id == song.id) playingQueue.remove(i); } - while (originalPlayingQueue.contains(song)){ - originalPlayingQueue.remove(song); + for (int i = 0; i < originalPlayingQueue.size(); i++) { + if (originalPlayingQueue.get(i).id == song.id) originalPlayingQueue.remove(i); + } + if (song.id == currentSongId) { + playSong(); } saveState(); } @@ -513,7 +516,7 @@ public class MusicService extends Service implements MediaPlayer.OnPreparedListe final int currentPosition = getPosition(); Song songToMove = playingQueue.remove(from); playingQueue.add(to, songToMove); - if(getShuffleMode() == SHUFFLE_MODE_NONE) { + if (getShuffleMode() == SHUFFLE_MODE_NONE) { Song tmpSong = originalPlayingQueue.remove(from); originalPlayingQueue.add(to, tmpSong); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsFabActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsFabActivity.java index ddfb2b8d..a5b12bf9 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsFabActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsFabActivity.java @@ -33,8 +33,11 @@ public abstract class AbsFabActivity extends AbsBaseActivity { @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); + try { + App.bus.register(busEventListener); + } catch (Exception ignored) { + } setUpFab(); - App.bus.register(busEventListener); } private void setUpFab() { @@ -137,7 +140,10 @@ public abstract class AbsFabActivity extends AbsBaseActivity { @Override protected void onDestroy() { super.onDestroy(); - App.bus.unregister(busEventListener); + try { + App.bus.unregister(busEventListener); + } catch (Exception ignored) { + } } public void onMusicRemoteEvent(MusicRemoteEvent event) { diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/AbsMainActivityFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/AbsMainActivityFragment.java index 663207ae..d1ee630b 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/AbsMainActivityFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/AbsMainActivityFragment.java @@ -2,9 +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; import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble; import com.kabouzeid.gramophone.ui.activities.MainActivity; diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/AlbumViewFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/AlbumViewFragment.java index 66a83b85..2e6c0569 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/AlbumViewFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/AlbumViewFragment.java @@ -9,10 +9,6 @@ import android.view.ViewGroup; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.adapter.AlbumAdapter; -import com.kabouzeid.gramophone.loader.AlbumLoader; -import com.kabouzeid.gramophone.model.Album; - -import java.util.List; /** * Created by karim on 22.11.14. @@ -35,12 +31,9 @@ public class AlbumViewFragment extends AbsMainActivityFragment { } private void setUpRecyclerView() { - List albums = AlbumLoader.getAllAlbums(getActivity()); - AlbumAdapter albumAdapter = new AlbumAdapter(getActivity(), albums); - recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 2)); - recyclerView.setAdapter(albumAdapter); recyclerView.setPadding(0, getTopPadding(), 0, getBottomPadding()); + recyclerView.setAdapter(new AlbumAdapter(getActivity())); } @Override diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/ArtistViewFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/ArtistViewFragment.java index c3fca39d..e401e5e3 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/ArtistViewFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/ArtistViewFragment.java @@ -10,10 +10,6 @@ import android.view.ViewGroup; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.adapter.ArtistAdapter; -import com.kabouzeid.gramophone.loader.ArtistLoader; -import com.kabouzeid.gramophone.model.Artist; - -import java.util.List; public class ArtistViewFragment extends AbsMainActivityFragment { public static final String TAG = ArtistViewFragment.class.getSimpleName(); @@ -33,12 +29,9 @@ public class ArtistViewFragment extends AbsMainActivityFragment { } private void setUpRecyclerView() { - List artists = ArtistLoader.getAllArtists(getActivity()); - ArtistAdapter artistAdapter = new ArtistAdapter(getActivity(), artists); - recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 1)); - recyclerView.setAdapter(artistAdapter); recyclerView.setPadding(0, getTopPadding(), 0, getBottomPadding()); + recyclerView.setAdapter(new ArtistAdapter(getActivity())); } @Override diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/PlaylistViewFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/PlaylistViewFragment.java index 824fb203..ff8a47c3 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/PlaylistViewFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/PlaylistViewFragment.java @@ -8,15 +8,8 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import com.kabouzeid.gramophone.App; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.adapter.PlaylistAdapter; -import com.kabouzeid.gramophone.loader.PlaylistLoader; -import com.kabouzeid.gramophone.model.DataBaseChangedEvent; -import com.kabouzeid.gramophone.model.Playlist; -import com.squareup.otto.Subscribe; - -import java.util.List; public class PlaylistViewFragment extends AbsMainActivityFragment { public static final String TAG = PlaylistViewFragment.class.getSimpleName(); @@ -41,24 +34,13 @@ public class PlaylistViewFragment extends AbsMainActivityFragment { setUpAdapter(); } - private void setUpAdapter(){ - if(recyclerView != null) { - List playlists = PlaylistLoader.getAllPlaylists(getActivity()); - PlaylistAdapter adapter = new PlaylistAdapter(getActivity(), playlists); + private void setUpAdapter() { + if (recyclerView != null) { + PlaylistAdapter adapter = new PlaylistAdapter(getActivity()); recyclerView.setAdapter(adapter); } } - @Subscribe - public void onDataBaseEvent(DataBaseChangedEvent event) { - switch (event.getAction()) { - case DataBaseChangedEvent.PLAYLISTS_CHANGED: - case DataBaseChangedEvent.DATABASE_CHANGED: - setUpAdapter(); - break; - } - } - @Override public void enableViews() { super.enableViews(); @@ -70,16 +52,4 @@ public class PlaylistViewFragment extends AbsMainActivityFragment { super.disableViews(); recyclerView.setEnabled(false); } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - App.bus.register(this); - } - - @Override - public void onDestroy() { - super.onDestroy(); - App.bus.unregister(this); - } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/SongViewFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/SongViewFragment.java index ad9d4c00..250ea78f 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/SongViewFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/SongViewFragment.java @@ -9,10 +9,6 @@ import android.view.ViewGroup; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.adapter.songadapter.SongAdapter; -import com.kabouzeid.gramophone.loader.SongLoader; -import com.kabouzeid.gramophone.model.Song; - -import java.util.List; /** * Created by karim on 29.12.14. @@ -35,12 +31,9 @@ public class SongViewFragment extends AbsMainActivityFragment { } private void setUpRecyclerView() { - List songs = SongLoader.getAllSongs(getActivity()); - SongAdapter songAdapter = new SongAdapter(getActivity(), songs); - recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 1)); - recyclerView.setAdapter(songAdapter); recyclerView.setPadding(0, getTopPadding(), 0, getBottomPadding()); + recyclerView.setAdapter(new SongAdapter(getActivity())); } @Override diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java index af2fd93e..acfe5fe3 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java @@ -7,18 +7,18 @@ import android.content.Context; import android.database.Cursor; import android.net.Uri; import android.os.Environment; -import android.os.ParcelFileDescriptor; import android.provider.BaseColumns; import android.provider.MediaStore; import android.util.Log; import android.widget.Toast; +import com.kabouzeid.gramophone.App; import com.kabouzeid.gramophone.helper.MusicPlayerRemote; import com.kabouzeid.gramophone.loader.SongLoader; +import com.kabouzeid.gramophone.model.DataBaseChangedEvent; import com.kabouzeid.gramophone.model.Song; import java.io.File; -import java.io.FileDescriptor; import java.io.FileNotFoundException; import java.io.IOException; import java.util.List; @@ -97,7 +97,7 @@ public class MusicUtil { } public static void deleteTracks(final Context context, final List songs) { - final String[] projection = new String[] { + final String[] projection = new String[]{ BaseColumns._ID, MediaStore.MediaColumns.DATA }; final StringBuilder selection = new StringBuilder(); @@ -120,6 +120,7 @@ public class MusicUtil { final int id = cursor.getInt(0); final Song song = SongLoader.getSong(context, id); MusicPlayerRemote.removeFromQueue(song); + cursor.moveToNext(); } // Step 2: Remove selected tracks from the database @@ -147,5 +148,6 @@ public class MusicUtil { context.getContentResolver().notifyChange(Uri.parse("content://media"), null); Toast.makeText(context, "Deleted " + songs.size() + " songs", Toast.LENGTH_SHORT).show(); //TODO add resource string + App.bus.post(new DataBaseChangedEvent(DataBaseChangedEvent.SONGS_CHANGED)); } } diff --git a/app/src/main/res/layout/item_grid_artist_album.xml b/app/src/main/res/layout/item_grid_artist_album.xml index 012cb889..fb832e29 100644 --- a/app/src/main/res/layout/item_grid_artist_album.xml +++ b/app/src/main/res/layout/item_grid_artist_album.xml @@ -7,6 +7,7 @@ android:foreground="?rect_selector"> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c30f118a..4ec9ab37 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -85,5 +85,8 @@ Could not create playlist\u0020 Delete playlist\u0020 Rename playlist\u0020 + Delete\u0020 + \u0020songs? + "Warning: This operation can not be undone."