Implemented RadioButtonPreference
Change-Id: I047b6a95f3001b60e7500f85c25d507e1ca1ad0f
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 459b0c0..1b24a11 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -704,7 +704,7 @@
<meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
android:resource="@id/application_settings" />
</activity-alias>
-
+
<!-- Provide direct entry into manage apps showing storage usage for apps.
This is for compatibility with old shortcuts. -->
<activity-alias android:name=".applications.StorageUse"
@@ -814,7 +814,7 @@
<meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
android:resource="@id/application_settings" /> -->
</activity>
-
+
<activity android:name="Settings$LocationSettingsActivity"
android:label="@string/location_settings_title"
android:configChanges="orientation|keyboardHidden|screenSize"
diff --git a/res/layout/preference_widget_radiobutton.xml b/res/layout/preference_widget_radiobutton.xml
new file mode 100644
index 0000000..7f4ee95
--- /dev/null
+++ b/res/layout/preference_widget_radiobutton.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2006 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.
+-->
+
+<!-- Layout used by CheckBoxPreference for the checkbox style. This is inflated
+ inside android.R.layout.preference. -->
+<RadioButton xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+android:id/checkbox"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:focusable="false"
+ android:clickable="false" />
diff --git a/res/xml/location_settings.xml b/res/xml/location_settings.xml
index 246a383..9af36da 100644
--- a/res/xml/location_settings.xml
+++ b/res/xml/location_settings.xml
@@ -27,14 +27,14 @@
android:key="location_sources"
android:title="@string/location_sources_heading" />
- <CheckBoxPreference
+ <com.android.settings.location.RadioButtonPreference
android:key="location_gps"
android:title="@string/location_gps"
android:summary="@string/location_street_level"
android:dependency="location_toggle"
android:persistent="false" />
- <com.android.settings.location.WrappingCheckBoxPreference
+ <com.android.settings.location.RadioButtonPreference
android:key="location_network"
android:title="@string/location_network_based"
android:summary="@string/location_neighborhood_level"
diff --git a/src/com/android/settings/location/LocationSettings.java b/src/com/android/settings/location/LocationSettings.java
index 62bd272..8ddde56 100644
--- a/src/com/android/settings/location/LocationSettings.java
+++ b/src/com/android/settings/location/LocationSettings.java
@@ -40,7 +40,7 @@
import java.util.Observer;
/**
- * Gesture lock pattern settings.
+ * Location access settings.
*/
public class LocationSettings extends SettingsPreferenceFragment
implements Preference.OnPreferenceChangeListener {
@@ -236,25 +236,3 @@
}
}
}
-
-class WrappingCheckBoxPreference extends CheckBoxPreference {
-
- public WrappingCheckBoxPreference(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- }
-
- public WrappingCheckBoxPreference(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- @Override
- protected void onBindView(View view) {
- super.onBindView(view);
-
- TextView title = (TextView) view.findViewById(android.R.id.title);
- if (title != null) {
- title.setSingleLine(false);
- title.setMaxLines(3);
- }
- }
-}
diff --git a/src/com/android/settings/location/RadioButtonPreference.java b/src/com/android/settings/location/RadioButtonPreference.java
new file mode 100644
index 0000000..452dc36
--- /dev/null
+++ b/src/com/android/settings/location/RadioButtonPreference.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+package com.android.settings.location;
+
+import android.content.Context;
+import android.preference.CheckBoxPreference;
+import android.util.AttributeSet;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import com.android.settings.R;
+
+/**
+ * Check box preference with check box replaced by radio button.
+ *
+ * Functionally speaking, it's actually a CheckBoxPreference. We only modified
+ * the widget to RadioButton to make it "look like" a RadioButtonPreference.
+ *
+ * In other words, there's no "RadioButtonPreferenceGroup" in this
+ * implementation. When you check one RadioButtonPreference, if you want to
+ * uncheck all the other preferences, you should do that by code yourself.
+ */
+public class RadioButtonPreference extends CheckBoxPreference {
+ public RadioButtonPreference(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ setWidgetLayoutResource(R.layout.preference_widget_radiobutton);
+ }
+
+ public RadioButtonPreference(Context context, AttributeSet attrs) {
+ this(context, attrs, com.android.internal.R.attr.checkBoxPreferenceStyle);
+ }
+
+ public RadioButtonPreference(Context context) {
+ this(context, null);
+ }
+
+ @Override
+ protected void onBindView(View view) {
+ super.onBindView(view);
+
+ TextView title = (TextView) view.findViewById(android.R.id.title);
+ if (title != null) {
+ title.setSingleLine(false);
+ title.setMaxLines(3);
+ }
+ }
+}