package com.piusvelte.sonet.fragment;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.StringRes;
/**
* Created by bemmanuel on 4/11/15.
*/
public class ItemsDialogFragment extends BaseDialogFragment implements DialogInterface.OnClickListener {
private static final String ARG_REQUEST_CODE = "request_code";
private static final String ARG_ITEMS = "items";
private static final String ARG_WHICH = "which";
/** Resource id for title [int] */
private static final String ARG_TITLE = "title";
public static ItemsDialogFragment newInstance(@NonNull CharSequence[] items, int requestCode) {
ItemsDialogFragment chooseAccountDialogFragment = new ItemsDialogFragment();
chooseAccountDialogFragment.setRequestCode(requestCode);
Bundle args = chooseAccountDialogFragment.getArguments();
args.putInt(ARG_REQUEST_CODE, requestCode);
args.putCharSequenceArray(ARG_ITEMS, items);
return chooseAccountDialogFragment;
}
public static ItemsDialogFragment newInstance(@NonNull CharSequence[] items, int requestCode, @StringRes int title) {
ItemsDialogFragment fragment = newInstance(items, requestCode);
Bundle args = fragment.getArguments();
args.putInt(ARG_TITLE, title);
return fragment;
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Bundle args = getArguments();
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
.setItems(args.getCharSequenceArray(ARG_ITEMS), this);
if (args.containsKey(ARG_TITLE)) {
builder.setTitle(args.getInt(ARG_TITLE));
}
return builder.create();
}
@Override
public void onDismiss(DialogInterface dialog) {
if (!getArguments().containsKey(ARG_WHICH)) {
deliverResult(Activity.RESULT_CANCELED);
}
}
@Override
public void onClick(DialogInterface dialog, int which) {
Bundle args = getArguments();
args.putInt(ARG_WHICH, which);
deliverResult(Activity.RESULT_OK);
dismiss();
}
public static String[] getItems(@Nullable Intent intent) {
if (intent == null) {
return null;
}
return (String[]) intent.getCharSequenceArrayExtra(ARG_ITEMS);
}
public static int getWhich(@Nullable Intent intent, int defaultValue) {
if (intent == null) {
return defaultValue;
}
return intent.getIntExtra(ARG_WHICH, defaultValue);
}
}