mirror of
https://github.com/moparisthebest/k-9
synced 2024-12-02 22:12:16 -05:00
74 lines
1.9 KiB
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;
|
|
}
|
|
|
|
}
|