package pasta.music.dialogs; import android.content.Context; import android.graphics.Color; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.graphics.drawable.DrawableCompat; import android.support.v7.app.AppCompatDialog; import android.support.v7.widget.Toolbar; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import com.afollestad.async.Action; import java.util.List; import pasta.music.Pasta; import pasta.music.R; import pasta.music.data.PlaylistListData; import pasta.music.data.TrackListData; import pasta.music.utils.ImageUtils; public class AddToPlaylistDialog extends AppCompatDialog { private Pasta pasta; private TrackListData data; ListView listView; List<PlaylistListData> playlists; public AddToPlaylistDialog(Context context, TrackListData data) { super(context, R.style.AppTheme_Dialog); pasta = (Pasta) context.getApplicationContext(); this.data = data; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dialog_add_to_playlist); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); Drawable close = ImageUtils.getVectorDrawable(getContext(), R.drawable.ic_close); DrawableCompat.setTint(close, Color.BLACK); toolbar.setNavigationIcon(close); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (isShowing()) dismiss(); } }); listView = (ListView) findViewById(R.id.listView); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, final int position, long id) { new Action<Boolean>() { @NonNull @Override public String id() { return "addToPlaylist"; } @Nullable @Override protected Boolean run() throws InterruptedException { try { PlaylistListData playlist = playlists.get(position); //TODO: add track (data) to playlist } catch (Exception e) { e.printStackTrace(); return false; } return true; } @Override protected void done(@Nullable Boolean result) { if (result == null) result = false; pasta.showToast(pasta.getString(result ? R.string.added : R.string.error)); } }.execute(); if (isShowing()) dismiss(); } }); new Action<List<PlaylistListData>>() { @NonNull @Override public String id() { return "showAddToDialog"; } @Nullable @Override protected List<PlaylistListData> run() throws InterruptedException { return pasta.getFavoritePlaylists(); } @Override protected void done(@Nullable final List<PlaylistListData> result) { if (result == null) { pasta.onError(getContext(), "add to playlist dialog"); AddToPlaylistDialog.this.dismiss(); return; } AddToPlaylistDialog.this.playlists = result; String[] names = new String[result.size()]; for (int i = 0; i < result.size(); i++) { names[i] = result.get(i).playlistName; } listView.setAdapter(new ArrayAdapter<>(getContext(), R.layout.playlist_item_text, R.id.title, names)); } }.execute(); } }