summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/drawable-hdpi/ic_bt_config.pngbin1767 -> 773 bytes
-rw-r--r--res/drawable-mdpi/ic_bt_config.pngbin1196 -> 653 bytes
-rw-r--r--res/values/strings.xml6
-rw-r--r--src/com/android/settings/bluetooth/BluetoothSettings.java93
4 files changed, 63 insertions, 36 deletions
diff --git a/res/drawable-hdpi/ic_bt_config.png b/res/drawable-hdpi/ic_bt_config.png
index c6d2483..47b4ba2 100644
--- a/res/drawable-hdpi/ic_bt_config.png
+++ b/res/drawable-hdpi/ic_bt_config.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_bt_config.png b/res/drawable-mdpi/ic_bt_config.png
index eefda26..7928104 100644
--- a/res/drawable-mdpi/ic_bt_config.png
+++ b/res/drawable-mdpi/ic_bt_config.png
Binary files differ
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 251da79..f8d38a2 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -955,10 +955,10 @@
<string name="bluetooth_searching_for_devices">Searching\u2026</string>
<!-- Bluetooth settings: The sub heading for device settings. [CHAR LIMIT=30] -->
<string name="bluetooth_preference_device_settings">Device settings</string>
- <!-- Bluetooth settings: The sub heading for paired devices. [CHAR LIMIT=30] -->
+ <!-- Bluetooth settings: The sub heading for devices which have already been paired with this device. [CHAR LIMIT=40] -->
<string name="bluetooth_preference_paired_devices">Paired devices</string>
- <!-- Bluetooth settings: The sub heading for found devices when scanning. [CHAR LIMIT=30] -->
- <string name="bluetooth_preference_found_devices">Found devices</string>
+ <!-- Bluetooth settings: The sub heading for available devices during and after scanning. [CHAR LIMIT=40] -->
+ <string name="bluetooth_preference_found_devices">Available devices</string>
<!-- Bluetooth settings. Context menu item for a device. Action will connect to all profiles on the device. -->
<string name="bluetooth_device_context_connect">Connect</string>
<!-- Bluetooth settings. Context menu item for a device. Action will disconnect from all profiles on the device. -->
diff --git a/src/com/android/settings/bluetooth/BluetoothSettings.java b/src/com/android/settings/bluetooth/BluetoothSettings.java
index 6a5641f..2208223 100644
--- a/src/com/android/settings/bluetooth/BluetoothSettings.java
+++ b/src/com/android/settings/bluetooth/BluetoothSettings.java
@@ -23,6 +23,7 @@ import android.bluetooth.BluetoothDevice;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceActivity;
+import android.preference.PreferenceCategory;
import android.preference.PreferenceGroup;
import android.preference.PreferenceScreen;
import android.util.Log;
@@ -51,8 +52,8 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment {
private BluetoothEnabler mBluetoothEnabler;
- private PreferenceGroup mFoundDevicesCategory;
- private boolean mFoundDevicesCategoryIsPresent;
+ private PreferenceGroup mAvailableDevicesCategory;
+ private boolean mAvailableDevicesCategoryIsPresent;
private View mView;
private TextView mEmptyView;
@@ -97,10 +98,6 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment {
mBluetoothEnabler = new BluetoothEnabler(activity, actionBarSwitch);
- if (mLocalAdapter != null && mLocalAdapter.isEnabled()) {
- activity.getActionBar().setSubtitle(mLocalAdapter.getName());
- }
-
setHasOptionsMenu(true);
}
@@ -159,8 +156,8 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment {
}
private void startScanning() {
- if (!mFoundDevicesCategoryIsPresent) {
- getPreferenceScreen().addPreference(mFoundDevicesCategory);
+ if (!mAvailableDevicesCategoryIsPresent) {
+ getPreferenceScreen().addPreference(mAvailableDevicesCategory);
}
mLocalAdapter.startScanning(true);
}
@@ -171,6 +168,16 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment {
super.onDevicePreferenceClick(btPreference);
}
+ private void addDeviceCategory(PreferenceGroup preferenceGroup, int titleId,
+ BluetoothDeviceFilter.Filter filter) {
+ preferenceGroup.setTitle(titleId);
+ getPreferenceScreen().addPreference(preferenceGroup);
+ setFilter(filter);
+ setDeviceListGroup(preferenceGroup);
+ addCachedDevices();
+ preferenceGroup.setEnabled(true);
+ }
+
private void updateContent(int bluetoothState) {
final PreferenceScreen preferenceScreen = getPreferenceScreen();
getActivity().invalidateOptionsMenu();
@@ -179,42 +186,58 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment {
switch (bluetoothState) {
case BluetoothAdapter.STATE_ON:
preferenceScreen.removeAll();
-
- // Add bonded devices from cache first
- setFilter(BluetoothDeviceFilter.BONDED_DEVICE_FILTER);
- setDeviceListGroup(preferenceScreen);
preferenceScreen.setOrderingAsAdded(true);
- addCachedDevices();
- int numberOfPairedDevices = preferenceScreen.getPreferenceCount();
-
- // Found devices category
- mFoundDevicesCategory = new ProgressCategory(getActivity(), null);
- mFoundDevicesCategory.setTitle(R.string.bluetooth_preference_found_devices);
- preferenceScreen.addPreference(mFoundDevicesCategory);
- mFoundDevicesCategoryIsPresent = true;
-
- // Unbonded found devices from cache
- setFilter(BluetoothDeviceFilter.UNBONDED_DEVICE_FILTER);
- setDeviceListGroup(mFoundDevicesCategory);
- addCachedDevices();
-
- int numberOfUnpairedDevices = mFoundDevicesCategory.getPreferenceCount();
- if (numberOfUnpairedDevices == 0) {
- preferenceScreen.removePreference(mFoundDevicesCategory);
- mFoundDevicesCategoryIsPresent = false;
+ // This device
+ if (mMyDevicePreference == null) {
+ mMyDevicePreference = new Preference(getActivity());
+ }
+ if (mLocalAdapter != null) {
+ mMyDevicePreference.setTitle(mLocalAdapter.getName());
}
+ mMyDevicePreference.setEnabled(true);
+ preferenceScreen.addPreference(mMyDevicePreference);
- if (numberOfPairedDevices == 0) startScanning();
+ // Paired devices category
+ if (mPairedDevicesCategory == null) {
+ mPairedDevicesCategory = new PreferenceCategory(getActivity());
+ } else {
+ mPairedDevicesCategory.removeAll();
+ }
+ addDeviceCategory(mPairedDevicesCategory,
+ R.string.bluetooth_preference_paired_devices,
+ BluetoothDeviceFilter.BONDED_DEVICE_FILTER);
+ int numberOfPairedDevices = mPairedDevicesCategory.getPreferenceCount();
+
+ // Available devices category
+ if (mAvailableDevicesCategory == null) {
+ mAvailableDevicesCategory = new ProgressCategory(getActivity(), null);
+ } else {
+ mAvailableDevicesCategory.removeAll();
+ }
+ addDeviceCategory(mAvailableDevicesCategory,
+ R.string.bluetooth_preference_found_devices,
+ BluetoothDeviceFilter.UNBONDED_DEVICE_FILTER);
+ int numberOfAvailableDevices = mAvailableDevicesCategory.getPreferenceCount();
+ mAvailableDevicesCategoryIsPresent = true;
+
+ if (numberOfAvailableDevices == 0) {
+ preferenceScreen.removePreference(mAvailableDevicesCategory);
+ mAvailableDevicesCategoryIsPresent = false;
+ }
- return;
+ if (numberOfPairedDevices == 0) {
+ preferenceScreen.removePreference(mPairedDevicesCategory);
+ startScanning();
+ }
+ return; // not break
case BluetoothAdapter.STATE_TURNING_OFF:
int preferenceCount = preferenceScreen.getPreferenceCount();
for (int i = 0; i < preferenceCount; i++) {
preferenceScreen.getPreference(i).setEnabled(false);
}
- return;
+ return; // not break
case BluetoothAdapter.STATE_OFF:
messageId = R.string.bluetooth_empty_list_bluetooth_off;
@@ -268,6 +291,10 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment {
}
};
+ private Preference mMyDevicePreference;
+
+ private PreferenceGroup mPairedDevicesCategory;
+
/**
* Add a listener, which enables the advanced settings icon.
* @param preference the newly added preference