diff --git a/res/layout/ignore_optimizations_content.xml b/res/layout/ignore_optimizations_content.xml
new file mode 100644
index 00000000000..4641f0ed633
--- /dev/null
+++ b/res/layout/ignore_optimizations_content.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/res/layout/radio_with_summary.xml b/res/layout/radio_with_summary.xml
index 20102078e40..9c3705037c9 100644
--- a/res/layout/radio_with_summary.xml
+++ b/res/layout/radio_with_summary.xml
@@ -20,6 +20,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
+ android:background="?android:attr/selectableItemBackground"
android:minHeight="?android:attr/listPreferredItemHeightSmall">
(getString(R.string.ignore_optimizations_on),
- getString(R.string.ignore_optimizations_on_desc)));
- mAdapter.add(new Pair(getString(R.string.ignore_optimizations_off),
- getString(R.string.ignore_optimizations_off_desc)));
- mSelectedIndex = mDefaultOn || mBackend.isWhitelisted(mPackageName) ? 0 : 1;
- if (mBackend.isSysWhitelisted(mPackageName)) {
- mAdapter.setEnabled(1, false);
+ mIsEnabled = mDefaultOn || mBackend.isWhitelisted(mPackageName);
+ }
+
+ public Checkable setup(View view, boolean on) {
+ ((TextView) view.findViewById(android.R.id.title)).setText(on
+ ? R.string.ignore_optimizations_on : R.string.ignore_optimizations_off);
+ ((TextView) view.findViewById(android.R.id.summary)).setText(on
+ ? R.string.ignore_optimizations_on_desc : R.string.ignore_optimizations_off_desc);
+ view.setClickable(true);
+ view.setOnClickListener(this);
+ if (!on && mBackend.isSysWhitelisted(mPackageName)) {
+ view.setEnabled(false);
}
+ return (Checkable) view;
}
@Override
@@ -78,17 +85,41 @@ public class HighPowerDetail extends DialogFragment implements OnClickListener {
AlertDialog.Builder b = new AlertDialog.Builder(getContext())
.setTitle(getString(R.string.ignore_optimizations_title, mLabel))
.setNegativeButton(R.string.cancel, null)
- .setSingleChoiceItems(mAdapter, mSelectedIndex, this);
+ .setView(R.layout.ignore_optimizations_content);
if (!mBackend.isSysWhitelisted(mPackageName)) {
b.setPositiveButton(R.string.done, this);
}
return b.create();
}
+ @Override
+ public void onStart() {
+ super.onStart();
+ mOptionOn = setup(getDialog().findViewById(R.id.ignore_on), true);
+ mOptionOff = setup(getDialog().findViewById(R.id.ignore_off), false);
+ updateViews();
+ }
+
+ private void updateViews() {
+ mOptionOn.setChecked(mIsEnabled);
+ mOptionOff.setChecked(!mIsEnabled);
+ }
+
+ @Override
+ public void onClick(View v) {
+ if (v == mOptionOn) {
+ mIsEnabled = true;
+ updateViews();
+ } else if (v == mOptionOff) {
+ mIsEnabled = false;
+ updateViews();
+ }
+ }
+
@Override
public void onClick(DialogInterface dialog, int which) {
if (which == DialogInterface.BUTTON_POSITIVE) {
- boolean newValue = mSelectedIndex == 0;
+ boolean newValue = mIsEnabled;
boolean oldValue = mBackend.isWhitelisted(mPackageName);
if (newValue != oldValue) {
if (newValue) {
@@ -97,8 +128,6 @@ public class HighPowerDetail extends DialogFragment implements OnClickListener {
mBackend.removeApp(mPackageName);
}
}
- } else {
- mSelectedIndex = which;
}
}
@@ -130,29 +159,4 @@ public class HighPowerDetail extends DialogFragment implements OnClickListener {
fragment.setTargetFragment(caller, requestCode);
fragment.show(caller.getFragmentManager(), HighPowerDetail.class.getSimpleName());
}
-
- private class Adapter extends ArrayAdapter> {
- private final SparseBooleanArray mEnabled = new SparseBooleanArray();
-
- public Adapter(Context context, int resource) {
- super(context, resource, android.R.id.title);
- }
-
- public void setEnabled(int index, boolean enabled) {
- mEnabled.put(index, enabled);
- }
-
- public boolean isEnabled(int position) {
- return mEnabled.get(position, true);
- }
-
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- View view = super.getView(position, convertView, parent);
- ((TextView) view.findViewById(android.R.id.title)).setText(getItem(position).first);
- ((TextView) view.findViewById(android.R.id.summary)).setText(getItem(position).second);
- view.setEnabled(isEnabled(position));
- return view;
- }
- }
}