ParanoidSystemUI: BluetoothDialog: Sort devices by last connection time
Same as settings does it. Offer a major UX improvement. Change-Id: I0ce229ed2baf9ee77f9f649fc2115e0670aed38a Signed-off-by: Adithya R <gh0strider.2k18.reborn@gmail.com>
This commit is contained in:
parent
06337b1a7a
commit
d4dd159b6e
|
@ -23,6 +23,7 @@
|
|||
package co.aospa.systemui.qs.tiles.dialog;
|
||||
|
||||
import android.bluetooth.BluetoothAdapter;
|
||||
import android.bluetooth.BluetoothDevice;
|
||||
import android.bluetooth.BluetoothProfile;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
|
@ -58,6 +59,8 @@ import com.android.systemui.statusbar.policy.BluetoothController;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Dialog for bluetooth
|
||||
|
@ -244,7 +247,7 @@ public class BluetoothDialog extends SystemUIDialog implements Window.Callback {
|
|||
mDivider.setVisibility(showProgress ? View.GONE : View.VISIBLE);
|
||||
|
||||
// devices
|
||||
final Collection<CachedBluetoothDevice> devices = mBluetoothController.getDevices();
|
||||
final Collection<CachedBluetoothDevice> devices = getDevices();
|
||||
if (!enabled || devices == null) {
|
||||
mBluetoothRecyclerView.setVisibility(View.GONE);
|
||||
mSeeAllLayout.setVisibility(View.GONE);
|
||||
|
@ -266,4 +269,25 @@ public class BluetoothDialog extends SystemUIDialog implements Window.Callback {
|
|||
mAdapter.setActiveDevice(activeDevice);
|
||||
mSeeAllLayout.setVisibility(devices.size() > MAX_DEVICES_COUNT ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
private Collection<CachedBluetoothDevice> getDevices() {
|
||||
final Collection<CachedBluetoothDevice> devices = mBluetoothController.getDevices();
|
||||
if (devices == null) return null;
|
||||
if (devices.size() <= 1) return devices;
|
||||
Collection<CachedBluetoothDevice> sorted = new ArrayList<>();
|
||||
devices.stream().sorted(new BtDeviceComparator()).forEach(sorted::add);
|
||||
return sorted;
|
||||
}
|
||||
|
||||
private static class BtDeviceComparator implements Comparator<CachedBluetoothDevice> {
|
||||
final List<BluetoothDevice> sortedDevices =
|
||||
BluetoothAdapter.getDefaultAdapter().getMostRecentlyConnectedDevices();
|
||||
|
||||
@Override
|
||||
public int compare(CachedBluetoothDevice o1, CachedBluetoothDevice o2) {
|
||||
final int i1 = sortedDevices.indexOf(o1.getDevice());
|
||||
final int i2 = sortedDevices.indexOf(o2.getDevice());
|
||||
return i1 - i2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue