summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/layout/ignore_optimizations_content.xml33
-rw-r--r--res/layout/radio_with_summary.xml1
-rw-r--r--src/com/android/settings/fuelgauge/HighPowerDetail.java92
3 files changed, 82 insertions, 44 deletions
diff --git a/res/layout/ignore_optimizations_content.xml b/res/layout/ignore_optimizations_content.xml
new file mode 100644
index 0000000..4641f0e
--- /dev/null
+++ b/res/layout/ignore_optimizations_content.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2015 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingTop="8dp"
+ android:paddingBottom="8dp"
+ android:orientation="vertical">
+
+ <include
+ layout="@layout/radio_with_summary"
+ android:id="@+id/ignore_on" />
+
+ <include
+ layout="@layout/radio_with_summary"
+ android:id="@+id/ignore_off" />
+
+</LinearLayout>
diff --git a/res/layout/radio_with_summary.xml b/res/layout/radio_with_summary.xml
index 2010207..9c37050 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">
<CheckedTextView
diff --git a/src/com/android/settings/fuelgauge/HighPowerDetail.java b/src/com/android/settings/fuelgauge/HighPowerDetail.java
index c57a461..8c75868 100644
--- a/src/com/android/settings/fuelgauge/HighPowerDetail.java
+++ b/src/com/android/settings/fuelgauge/HighPowerDetail.java
@@ -16,7 +16,6 @@
package com.android.settings.fuelgauge;
-import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
@@ -27,18 +26,20 @@ import android.content.DialogInterface.OnClickListener;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Bundle;
-import android.util.Pair;
-import android.util.SparseBooleanArray;
+import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.ArrayAdapter;
+import android.view.ViewGroup.LayoutParams;
+import android.widget.Checkable;
+import android.widget.LinearLayout;
import android.widget.TextView;
import com.android.settings.R;
import com.android.settings.applications.AppInfoBase;
import com.android.settingslib.applications.ApplicationsState.AppEntry;
-public class HighPowerDetail extends DialogFragment implements OnClickListener {
+public class HighPowerDetail extends DialogFragment implements OnClickListener,
+ View.OnClickListener {
private static final String ARG_DEFAULT_ON = "default_on";
@@ -47,8 +48,9 @@ public class HighPowerDetail extends DialogFragment implements OnClickListener {
private String mPackageName;
private CharSequence mLabel;
private boolean mDefaultOn;
- private Adapter mAdapter;
- private int mSelectedIndex;
+ private boolean mIsEnabled;
+ private Checkable mOptionOn;
+ private Checkable mOptionOff;
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -62,15 +64,20 @@ public class HighPowerDetail extends DialogFragment implements OnClickListener {
mLabel = mPackageName;
}
mDefaultOn = getArguments().getBoolean(ARG_DEFAULT_ON);
- mAdapter = new Adapter(getContext(), R.layout.radio_with_summary);
- mAdapter.add(new Pair<String, String>(getString(R.string.ignore_optimizations_on),
- getString(R.string.ignore_optimizations_on_desc)));
- mAdapter.add(new Pair<String, String>(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,7 +85,7 @@ 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);
}
@@ -86,9 +93,33 @@ public class HighPowerDetail extends DialogFragment implements OnClickListener {
}
@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<Pair<String, String>> {
- 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;
- }
- }
}