Double list in Bluetooth Settings

Paired devices are listed first (from cache), followed by unpaired ones.
A scan is only started on user request or when there is no paired device
(should it be when there is no paired *connected* device?).

Wrench icon only displayed for paired devices.

Wrench click listener no longer uses mDeviceSettings which is unreliable
with ListView view recycling.

Fixed blinking ProgressCategory when the category was first in the list.

Change-Id: Ie749883426c12bd354da64733bd04b00304bc1f5
This commit is contained in:
Gilles Debunne
2011-06-28 14:01:50 -07:00
parent d1a22ec0a2
commit 4346cda76c
7 changed files with 115 additions and 84 deletions

View File

@@ -49,8 +49,6 @@ public final class BluetoothDevicePreference extends Preference implements
private final CachedBluetoothDevice mCachedDevice;
private ImageView mDeviceSettings;
private OnClickListener mOnSettingsClickListener;
private AlertDialog mDisconnectDialog;
@@ -121,13 +119,13 @@ public final class BluetoothDevicePreference extends Preference implements
btClass.setImageResource(getBtClassDrawable());
btClass.setAlpha(isEnabled() ? 255 : sDimAlpha);
btClass.setVisibility(View.VISIBLE);
mDeviceSettings = (ImageView) view.findViewById(R.id.deviceDetails);
ImageView deviceDetails = (ImageView) view.findViewById(R.id.deviceDetails);
if (mOnSettingsClickListener != null) {
mDeviceSettings.setOnClickListener(this);
mDeviceSettings.setTag(mCachedDevice);
mDeviceSettings.setAlpha(isEnabled() ? 255 : sDimAlpha);
deviceDetails.setOnClickListener(this);
deviceDetails.setTag(mCachedDevice);
deviceDetails.setAlpha(isEnabled() ? 255 : sDimAlpha);
} else { // Hide the settings icon and divider
mDeviceSettings.setVisibility(View.GONE);
deviceDetails.setVisibility(View.GONE);
View divider = view.findViewById(R.id.divider);
if (divider != null) {
divider.setVisibility(View.GONE);
@@ -152,13 +150,13 @@ public final class BluetoothDevicePreference extends Preference implements
}
public void onClick(View v) {
if (v == mDeviceSettings) {
if (mOnSettingsClickListener != null) {
mOnSettingsClickListener.onClick(v);
}
// Should never be null by construction
if (mOnSettingsClickListener != null) {
mOnSettingsClickListener.onClick(v);
}
}
@Override
public boolean equals(Object o) {
if ((o == null) || !(o instanceof BluetoothDevicePreference)) {
return false;
@@ -167,6 +165,7 @@ public final class BluetoothDevicePreference extends Preference implements
((BluetoothDevicePreference) o).mCachedDevice);
}
@Override
public int hashCode() {
return mCachedDevice.hashCode();
}
@@ -174,8 +173,8 @@ public final class BluetoothDevicePreference extends Preference implements
@Override
public int compareTo(Preference another) {
if (!(another instanceof BluetoothDevicePreference)) {
// Put other preference types above us
return 1;
// Rely on default sort
return super.compareTo(another);
}
return mCachedDevice