From 5df30490e0383cf22e1a38007b74b74df3f2de63 Mon Sep 17 00:00:00 2001 From: senaselis Date: Fri, 3 Nov 2017 03:16:28 +0300 Subject: [PATCH 1/5] first commit --- .../main/java/com/naman14/timber/adapters/SongsListAdapter.java | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/com/naman14/timber/adapters/SongsListAdapter.java b/app/src/main/java/com/naman14/timber/adapters/SongsListAdapter.java index a222e7854..aad92bbae 100644 --- a/app/src/main/java/com/naman14/timber/adapters/SongsListAdapter.java +++ b/app/src/main/java/com/naman14/timber/adapters/SongsListAdapter.java @@ -169,6 +169,7 @@ public boolean onMenuItemClick(MenuItem item) { case R.id.popup_song_delete: long[] deleteIds = {arraylist.get(position).id}; TimberUtils.showDeleteDialog(mContext,arraylist.get(position).title, deleteIds, SongsListAdapter.this, position); + removeSongAt(position); break; } return false; From 7db0985ed1d75975715af5b9bfe5c88ac1055f6f Mon Sep 17 00:00:00 2001 From: senaselis Date: Sun, 19 Nov 2017 23:52:49 +0300 Subject: [PATCH 2/5] fixing delete from device and remove from playlist --- .../java/com/naman14/timber/adapters/SongsListAdapter.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/java/com/naman14/timber/adapters/SongsListAdapter.java b/app/src/main/java/com/naman14/timber/adapters/SongsListAdapter.java index aad92bbae..9028601a0 100644 --- a/app/src/main/java/com/naman14/timber/adapters/SongsListAdapter.java +++ b/app/src/main/java/com/naman14/timber/adapters/SongsListAdapter.java @@ -139,6 +139,7 @@ public boolean onMenuItemClick(MenuItem item) { case R.id.popup_song_remove_playlist: TimberUtils.removeFromPlaylist(mContext, arraylist.get(position).id, playlistId); removeSongAt(position); + updateDataSet(arraylist); notifyItemRemoved(position); break; case R.id.popup_song_play: @@ -170,6 +171,7 @@ public boolean onMenuItemClick(MenuItem item) { long[] deleteIds = {arraylist.get(position).id}; TimberUtils.showDeleteDialog(mContext,arraylist.get(position).title, deleteIds, SongsListAdapter.this, position); removeSongAt(position); + updateDataSet(arraylist); break; } return false; @@ -265,6 +267,10 @@ public void addSongTo(int i, Song song) { public void removeSongAt(int i) { arraylist.remove(i); + + + // arraylist.set(i, arraylist.get(i-1)); + } } From 2809de2fceb113887e020db24e475fff58d35eb0 Mon Sep 17 00:00:00 2001 From: senaselis Date: Sun, 19 Nov 2017 23:58:44 +0300 Subject: [PATCH 3/5] fixing delete from device and remove from playlist --- .../java/com/naman14/timber/adapters/SongsListAdapter.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/src/main/java/com/naman14/timber/adapters/SongsListAdapter.java b/app/src/main/java/com/naman14/timber/adapters/SongsListAdapter.java index 9028601a0..4215bfb29 100644 --- a/app/src/main/java/com/naman14/timber/adapters/SongsListAdapter.java +++ b/app/src/main/java/com/naman14/timber/adapters/SongsListAdapter.java @@ -267,10 +267,6 @@ public void addSongTo(int i, Song song) { public void removeSongAt(int i) { arraylist.remove(i); - - - // arraylist.set(i, arraylist.get(i-1)); - } } From 92e241bba13de3803179f08d40f90250e6465869 Mon Sep 17 00:00:00 2001 From: senaselis Date: Tue, 21 Nov 2017 02:38:51 +0300 Subject: [PATCH 4/5] adding delete all --- .../timber/adapters/SongsListAdapter.java | 4 ++++ .../com/naman14/timber/utils/TimberUtils.java | 21 +++++++++++++++++++ app/src/main/res/menu/popup_song.xml | 5 +++++ 3 files changed, 30 insertions(+) diff --git a/app/src/main/java/com/naman14/timber/adapters/SongsListAdapter.java b/app/src/main/java/com/naman14/timber/adapters/SongsListAdapter.java index 4215bfb29..2f8d0533a 100644 --- a/app/src/main/java/com/naman14/timber/adapters/SongsListAdapter.java +++ b/app/src/main/java/com/naman14/timber/adapters/SongsListAdapter.java @@ -173,6 +173,10 @@ public boolean onMenuItemClick(MenuItem item) { removeSongAt(position); updateDataSet(arraylist); break; + case R.id.popup_song_delete_all: + + TimberUtils.deleteAll(mContext,arraylist); + break; } return false; } diff --git a/app/src/main/java/com/naman14/timber/utils/TimberUtils.java b/app/src/main/java/com/naman14/timber/utils/TimberUtils.java index 676e7b348..affd7faaf 100644 --- a/app/src/main/java/com/naman14/timber/utils/TimberUtils.java +++ b/app/src/main/java/com/naman14/timber/utils/TimberUtils.java @@ -38,10 +38,12 @@ import com.afollestad.materialdialogs.MaterialDialog; import com.naman14.timber.MusicPlayer; import com.naman14.timber.R; +import com.naman14.timber.models.Song; import com.naman14.timber.provider.RecentStore; import com.naman14.timber.provider.SongPlayCount; import java.io.File; +import java.util.List; public class TimberUtils { @@ -245,6 +247,16 @@ public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) } + + + public static void deleteAll(final Context context, final List arraylist){ + while(arraylist.get(0)!=null) { + long[] deleteId_ = {arraylist.remove(0).id}; + TimberUtils.deleteTracks(context, deleteId_); + } + } + + public static void deleteTracks(final Context context, final long[] list) { final String[] projection = new String[]{ BaseColumns._ID, MediaStore.MediaColumns.DATA, MediaStore.Audio.AudioColumns.ALBUM_ID @@ -269,8 +281,11 @@ public static void deleteTracks(final Context context, final long[] list) { // Remove from current playlist final long id = c.getLong(0); MusicPlayer.removeTrack(id); + + // Remove the track from the play count SongPlayCount.getInstance(context).removeItem(id); + // Remove any items in the recents database RecentStore.getInstance(context).removeItem(id); c.moveToNext(); @@ -306,6 +321,12 @@ public static void deleteTracks(final Context context, final long[] list) { MusicPlayer.refresh(); } + + + + + + public static void shareTrack(final Context context, long id) { final String[] projection = new String[]{ diff --git a/app/src/main/res/menu/popup_song.xml b/app/src/main/res/menu/popup_song.xml index 07f429e8c..bd4af9c3b 100644 --- a/app/src/main/res/menu/popup_song.xml +++ b/app/src/main/res/menu/popup_song.xml @@ -38,4 +38,9 @@ android:id="@+id/popup_song_delete" android:title="Delete from device" /> + + + \ No newline at end of file From 62eccfd5433924f8a66ec568d3a8098bd7e6195e Mon Sep 17 00:00:00 2001 From: senaselis Date: Sat, 25 Nov 2017 02:11:14 +0300 Subject: [PATCH 5/5] adding change name --- .../timber/adapters/SongsListAdapter.java | 14 +++++++- .../java/com/naman14/timber/models/Song.java | 2 +- .../com/naman14/timber/utils/TimberUtils.java | 36 +++++++++++++++++++ app/src/main/res/menu/popup_song.xml | 4 +++ 4 files changed, 54 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/naman14/timber/adapters/SongsListAdapter.java b/app/src/main/java/com/naman14/timber/adapters/SongsListAdapter.java index 2f8d0533a..d562f41aa 100644 --- a/app/src/main/java/com/naman14/timber/adapters/SongsListAdapter.java +++ b/app/src/main/java/com/naman14/timber/adapters/SongsListAdapter.java @@ -14,6 +14,7 @@ package com.naman14.timber.adapters; + import android.graphics.Color; import android.os.Handler; import android.support.v7.app.AppCompatActivity; @@ -28,10 +29,12 @@ import android.widget.PopupMenu; import android.widget.TextView; + import com.afollestad.appthemeengine.Config; import com.naman14.timber.MusicPlayer; import com.naman14.timber.R; import com.naman14.timber.dialogs.AddPlaylistDialog; + import com.naman14.timber.models.Song; import com.naman14.timber.utils.Helpers; import com.naman14.timber.utils.NavigationUtils; @@ -47,7 +50,7 @@ public class SongsListAdapter extends RecyclerView.Adapter implements BubbleTextGetter { public int currentlyPlayingPosition; - private List arraylist; + private static List arraylist; private AppCompatActivity mContext; private long[] songIDs; private boolean isPlaylist; @@ -177,6 +180,11 @@ public boolean onMenuItemClick(MenuItem item) { TimberUtils.deleteAll(mContext,arraylist); break; + case R.id.popup_song_change_name: + TimberUtils.showChangeNameDialog(mContext,arraylist.get(position).title, SongsListAdapter.this, position); + break; + + } return false; } @@ -189,6 +197,10 @@ public boolean onMenuItemClick(MenuItem item) { }); } + public static List getArrayList(){ + return arraylist; + } + public long[] getSongIds() { long[] ret = new long[getItemCount()]; for (int i = 0; i < getItemCount(); i++) { diff --git a/app/src/main/java/com/naman14/timber/models/Song.java b/app/src/main/java/com/naman14/timber/models/Song.java index fc0f532fa..8e79051d2 100644 --- a/app/src/main/java/com/naman14/timber/models/Song.java +++ b/app/src/main/java/com/naman14/timber/models/Song.java @@ -22,7 +22,7 @@ public class Song { public final String artistName; public final int duration; public final long id; - public final String title; + public String title; public final int trackNumber; public Song() { diff --git a/app/src/main/java/com/naman14/timber/utils/TimberUtils.java b/app/src/main/java/com/naman14/timber/utils/TimberUtils.java index affd7faaf..4041138b2 100644 --- a/app/src/main/java/com/naman14/timber/utils/TimberUtils.java +++ b/app/src/main/java/com/naman14/timber/utils/TimberUtils.java @@ -38,6 +38,9 @@ import com.afollestad.materialdialogs.MaterialDialog; import com.naman14.timber.MusicPlayer; import com.naman14.timber.R; +import com.naman14.timber.adapters.SongsListAdapter; +import com.naman14.timber.dataloaders.SongLoader; +import com.naman14.timber.fragments.PlaylistFragment; import com.naman14.timber.models.Song; import com.naman14.timber.provider.RecentStore; import com.naman14.timber.provider.SongPlayCount; @@ -248,6 +251,39 @@ public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) } + public static void showChangeNameDialog(final Context context, final String name, final RecyclerView.Adapter adapter, final int pos) { + new MaterialDialog.Builder(context) + .title("Change name?") + .content("Are you sure you want to change name of song " + name + " ?") + .negativeText("Cancel") + .input("Enter new song name", "", false, new MaterialDialog.InputCallback() { + @Override + public void onInput(@NonNull MaterialDialog dialog, CharSequence input) { + + + String newName = input.toString(); + SongsListAdapter.getArrayList().get(pos).title=newName; + adapter.notifyItemChanged(pos); + + + + + } + }).onNegative(new MaterialDialog.SingleButtonCallback() { + @Override + public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { + dialog.dismiss(); + } + }) + .show(); + + + + } + + + + public static void deleteAll(final Context context, final List arraylist){ while(arraylist.get(0)!=null) { diff --git a/app/src/main/res/menu/popup_song.xml b/app/src/main/res/menu/popup_song.xml index bd4af9c3b..e8ad5c3b7 100644 --- a/app/src/main/res/menu/popup_song.xml +++ b/app/src/main/res/menu/popup_song.xml @@ -43,4 +43,8 @@ android:id="@+id/popup_song_delete_all" android:title="Delete all" /> + + \ No newline at end of file