Zen mode settings fixes.
- Fix wiring for the "At night" section. Remove fragile index-based logic by adding value support to DropDownPreference. - Actually refresh zen config if it changes. - Only show the enter zen dialog for user-initiated changes. Change-Id: Ic3a3b9864942fb3ebf18cd838339de2ff28f9394
This commit is contained in:
@@ -26,10 +26,13 @@ import android.widget.ArrayAdapter;
|
||||
import android.widget.Spinner;
|
||||
import android.widget.AdapterView.OnItemSelectedListener;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class DropDownPreference extends Preference {
|
||||
private final Context mContext;
|
||||
private final ArrayAdapter<String> mAdapter;
|
||||
private final Spinner mSpinner;
|
||||
private final ArrayList<Object> mValues = new ArrayList<Object>();
|
||||
|
||||
private Callback mCallback;
|
||||
|
||||
@@ -77,17 +80,26 @@ public class DropDownPreference extends Preference {
|
||||
}
|
||||
|
||||
public void setSelectedItem(int position) {
|
||||
if (mCallback != null && !mCallback.onItemSelected(position)) {
|
||||
final Object value = mValues.get(position);
|
||||
if (mCallback != null && !mCallback.onItemSelected(position, value)) {
|
||||
return;
|
||||
}
|
||||
mSpinner.setSelection(position);
|
||||
setSummary(mAdapter.getItem(position));
|
||||
final boolean disableDependents = position == 0;
|
||||
final boolean disableDependents = value == null;
|
||||
notifyDependencyChange(disableDependents);
|
||||
}
|
||||
|
||||
public void addItem(int resId) {
|
||||
public void setSelectedValue(Object value) {
|
||||
final int i = mValues.indexOf(value);
|
||||
if (i > -1) {
|
||||
setSelectedItem(i);
|
||||
}
|
||||
}
|
||||
|
||||
public void addItem(int resId, Object value) {
|
||||
mAdapter.add(mContext.getResources().getString(resId));
|
||||
mValues.add(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -105,6 +117,6 @@ public class DropDownPreference extends Preference {
|
||||
}
|
||||
|
||||
public interface Callback {
|
||||
boolean onItemSelected(int pos);
|
||||
boolean onItemSelected(int pos, Object value);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user