package com.wigwamlabs.veckify;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;
import android.os.Bundle;
import com.wigwamlabs.spotify.Playlist;
import com.wigwamlabs.spotify.PlaylistContainer;
import com.wigwamlabs.spotify.ui.PlaylistContainerAdapter;
import com.wigwamlabs.veckify.db.AlarmEntry;
@SuppressWarnings("WeakerAccess")
public class PlaylistPickerFragment extends DialogFragment {
private static final String ARG_ALARM_ID = "alarm id";
private static final String ARG_ALARM_ENTRY = "alarm entry";
private static final String ARG_SELECTED_PLAYLIST = "selected playlist";
static PlaylistPickerFragment create(long alarmId, AlarmEntry entry, String selectedPlaylistLink) {
final PlaylistPickerFragment fragment = new PlaylistPickerFragment();
final Bundle bundle = new Bundle();
bundle.putLong(ARG_ALARM_ID, alarmId);
bundle.putParcelable(ARG_ALARM_ENTRY, entry);
bundle.putString(ARG_SELECTED_PLAYLIST, selectedPlaylistLink);
fragment.setArguments(bundle);
return fragment;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final MainActivity activity = (MainActivity) getActivity();
final PlaylistContainer playlistContainer = activity.getPlaylistContainer();
final Bundle bundle = getArguments();
final long alarmId = bundle.getLong(ARG_ALARM_ID);
final AlarmEntry entry = bundle.getParcelable(ARG_ALARM_ENTRY);
final String selectedPlaylist = bundle.getString(ARG_SELECTED_PLAYLIST);
final int selectedPlaylistIndex = playlistContainer.findPlaylistIndex(selectedPlaylist);
final PlaylistContainerAdapter adapter = new PlaylistContainerAdapter(activity, playlistContainer);
final AlertDialog alertDialog = new AlertDialog.Builder(activity)
.setSingleChoiceItems(adapter, selectedPlaylistIndex, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
onPicked(activity, alarmId, entry, (Playlist) adapter.getItem(which));
dialog.dismiss();
}
})
.create();
alertDialog.getListView().setSelector(R.drawable.taptoedit);
return alertDialog;
}
private void onPicked(MainActivity activity, long alarmId, AlarmEntry entry, Playlist playlist) {
if (playlist != null) {
entry.setPlaylistLink(playlist.getLink());
entry.setPlaylistName(playlist.getName());
} else {
entry.setPlaylistLink(null);
entry.setPlaylistName(null);
}
activity.onAlarmEntryChanged(alarmId, entry, true);
}
@Override
public void onPause() {
super.onDestroy();
// workaround: dismiss dialog when paused since the activity's playlist container will be null when created,
// so only support when the dialog is launched from the UI
dismiss();
}
}