Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

package com.naman14.timber.adapters;


import android.graphics.Color;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
Expand All @@ -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;
Expand All @@ -47,7 +50,7 @@
public class SongsListAdapter extends RecyclerView.Adapter<SongsListAdapter.ItemHolder> implements BubbleTextGetter {

public int currentlyPlayingPosition;
private List<Song> arraylist;
private static List<Song> arraylist;
private AppCompatActivity mContext;
private long[] songIDs;
private boolean isPlaylist;
Expand Down Expand Up @@ -139,6 +142,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:
Expand Down Expand Up @@ -169,7 +173,18 @@ 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);
updateDataSet(arraylist);
break;
case R.id.popup_song_delete_all:

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;
}
Expand All @@ -182,6 +197,10 @@ public boolean onMenuItemClick(MenuItem item) {
});
}

public static List<Song> getArrayList(){
return arraylist;
}

public long[] getSongIds() {
long[] ret = new long[getItemCount()];
for (int i = 0; i < getItemCount(); i++) {
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/com/naman14/timber/models/Song.java
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand Down
57 changes: 57 additions & 0 deletions app/src/main/java/com/naman14/timber/utils/TimberUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,15 @@
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;

import java.io.File;
import java.util.List;

public class TimberUtils {

Expand Down Expand Up @@ -245,6 +250,49 @@ 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<Song> 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
Expand All @@ -269,8 +317,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();
Expand Down Expand Up @@ -306,6 +357,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[]{
Expand Down
9 changes: 9 additions & 0 deletions app/src/main/res/menu/popup_song.xml
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,13 @@
android:id="@+id/popup_song_delete"
android:title="Delete from device" />


<item
android:id="@+id/popup_song_delete_all"
android:title="Delete all" />

<item
android:id="@+id/popup_song_change_name"
android:title="Change name" />

</menu>