package com.github.jthuraisamy.mastertap.fragments; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v4.app.DialogFragment; import android.util.Log; import com.github.jthuraisamy.mastertap.Helper; import com.github.jthuraisamy.mastertap.MainActivity; import com.github.jthuraisamy.mastertap.R; import com.github.jthuraisamy.mastertap.models.Card; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ImportCardsDialog extends DialogFragment { public static final String TAG = ImportCardsDialog.class.getSimpleName(); private static List<Card> cards; private List<Card> selectedCards; public ImportCardsDialog() {} public static ImportCardsDialog create(List<Card> cards) { ImportCardsDialog.cards = cards; return new ImportCardsDialog(); } @NonNull public Dialog onCreateDialog(Bundle savedInstanceState) { final MainActivity ctx = (MainActivity) getActivity(); AlertDialog.Builder alertDialog = new AlertDialog.Builder(ctx); // Populate selection items. CharSequence[] cardChoiceItems = new CharSequence[cards.size()]; for (int i = 0; i < cards.size(); i++) { cardChoiceItems[i] = Helper.prettyPan(cards.get(i).getPan()); } // Select all cards by default. boolean[] checkedItems = new boolean[cards.size()]; Arrays.fill(checkedItems, true); selectedCards = new ArrayList<Card>(); for (Card card : cards) selectedCards.add(card); // Set title bar. alertDialog.setTitle(R.string.import_cards_title); // Set multi-choice items. alertDialog.setMultiChoiceItems(cardChoiceItems, checkedItems, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i, boolean isSelected) { if (isSelected) { selectedCards.add(cards.get(i)); } else { selectedCards.remove(cards.get(i)); } for (Card card : selectedCards) { Log.i(TAG, "Selected: " + Helper.prettyPan(card.getPan())); } } }); alertDialog.setNegativeButton(R.string.cancel, null); alertDialog.setPositiveButton(R.string.import_cards, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { MainActivity.cardDao.importCards(selectedCards); ctx.refreshViewPager(); ctx.toastMessage(getString(R.string.import_success)); } }); return alertDialog.create(); } }