k-9/src/com/fsck/k9/preferences/CheckBoxListPreference.java

74 lines
1.9 KiB
Java

package com.fsck.k9.preferences;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.DialogInterface;
import android.preference.DialogPreference;
import android.util.AttributeSet;
public class CheckBoxListPreference extends DialogPreference {
private CharSequence[] mItems;
private boolean[] mCheckedItems;
/**
* checkboxes state when the dialog is displayed
*/
private boolean[] mPendingItems;
/**
* @param context
* @param attrs
* @param defStyle
*/
public CheckBoxListPreference(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
/**
* @param context
* @param attrs
*/
public CheckBoxListPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onPrepareDialogBuilder(final Builder builder) {
mPendingItems = new boolean[mItems.length];
System.arraycopy(mCheckedItems, 0, mPendingItems, 0, mCheckedItems.length);
builder.setMultiChoiceItems(mItems, mPendingItems,
new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(final DialogInterface dialog, final int which,
final boolean isChecked) {
mPendingItems[which] = isChecked;
}
});
}
@Override
protected void onDialogClosed(boolean positiveResult) {
if (positiveResult) {
System.arraycopy(mPendingItems, 0, mCheckedItems, 0, mPendingItems.length);
}
mPendingItems = null;
}
public void setItems(final CharSequence[] items) {
mItems = items;
}
public void setCheckedItems(final boolean[] items) {
mCheckedItems = items;
}
public boolean[] getCheckedItems() {
return mCheckedItems;
}
}