package com.boardgamegeek.ui.dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import com.boardgamegeek.R;
import com.boardgamegeek.filterer.CollectionFilterer;
import com.boardgamegeek.filterer.CollectionStatusFilterer;
public class CollectionStatusFilterDialog implements CollectionFilterDialog {
private String[] statusEntries;
private boolean[] selectedStatuses;
@Override
public void createDialog(final Context context, final OnFilterChangedListener listener, CollectionFilterer filter) {
init(context, (CollectionStatusFilterer) filter);
new AlertDialog.Builder(context, R.style.Theme_bgglight_Dialog_Alert)
.setTitle(R.string.menu_collection_status)
.setMultiChoiceItems(statusEntries, selectedStatuses, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
selectedStatuses[which] = isChecked;
}
})
.setNegativeButton(R.string.or, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (listener != null)
listener.addFilter(new CollectionStatusFilterer(context, selectedStatuses, true));
}
})
.setPositiveButton(R.string.and, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (listener != null)
listener.addFilter(new CollectionStatusFilterer(context, selectedStatuses, false));
}
})
.setNeutralButton(R.string.clear, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (listener != null) listener.removeFilter(getType(context));
}
})
.create()
.show();
}
@Override
public int getType(Context context) {
return new CollectionStatusFilterer(context).getType();
}
private void init(final Context context, CollectionStatusFilterer filter) {
statusEntries = context.getResources().getStringArray(R.array.collection_status_filter_entries);
if (filter == null) {
selectedStatuses = new boolean[statusEntries.length];
} else {
selectedStatuses = filter.getSelectedStatuses();
}
}
}