Loading src/com/android/settings/bluetooth/BluetoothDevicePreference.java +12 −2 Original line number Diff line number Diff line Loading @@ -96,7 +96,6 @@ public final class BluetoothDevicePreference extends GearPreference implements } mCachedDevice = cachedDevice; mCachedDevice.registerCallback(this); mCurrentTime = System.currentTimeMillis(); mType = type; Loading Loading @@ -127,13 +126,24 @@ public final class BluetoothDevicePreference extends GearPreference implements @Override protected void onPrepareForRemoval() { super.onPrepareForRemoval(); mCachedDevice.unregisterCallback(this); if (mDisconnectDialog != null) { mDisconnectDialog.dismiss(); mDisconnectDialog = null; } } @Override public void onAttached() { super.onAttached(); mCachedDevice.registerCallback(this); } @Override public void onDetached() { super.onDetached(); mCachedDevice.unregisterCallback(this); } public CachedBluetoothDevice getBluetoothDevice() { return mCachedDevice; } Loading src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceController.java +45 −25 Original line number Diff line number Diff line Loading @@ -51,14 +51,15 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); private static final int MAX_DEVICE_NUM = 3; private static final int DOCK_DEVICE_INDEX = 9; private static final String KEY_SEE_ALL = "previously_connected_devices_see_all"; private final List<Preference> mDevicesList = new ArrayList<>(); private final List<Preference> mDockDevicesList = new ArrayList<>(); private PreferenceGroup mPreferenceGroup; private BluetoothDeviceUpdater mBluetoothDeviceUpdater; private DockUpdater mSavedDockUpdater; private int mPreferenceSize; private BluetoothAdapter mBluetoothAdapter; @VisibleForTesting Loading Loading @@ -126,33 +127,38 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc @Override public void onDeviceAdded(Preference preference) { mPreferenceSize++; final List<BluetoothDevice> bluetoothDevices = mBluetoothAdapter.getMostRecentlyConnectedDevices(); final int index = bluetoothDevices.indexOf(((BluetoothDevicePreference) preference) .getBluetoothDevice().getDevice()); final int index = preference instanceof BluetoothDevicePreference ? bluetoothDevices.indexOf(((BluetoothDevicePreference) preference) .getBluetoothDevice().getDevice()) : DOCK_DEVICE_INDEX; if (DEBUG) { Log.d(TAG, "onDeviceAdded() " + preference.getTitle() + ", index of : " + index); for (BluetoothDevice device : bluetoothDevices) { Log.d(TAG, "onDeviceAdded() most recently device : " + device.getName()); } } if (mPreferenceSize <= MAX_DEVICE_NUM) { addPreference(mPreferenceSize, index, preference); } else { addPreference(MAX_DEVICE_NUM, index, preference); } addPreference(index, preference); updatePreferenceVisibility(); } private void addPreference(int size, int index, Preference preference) { private void addPreference(int index, Preference preference) { if (preference instanceof BluetoothDevicePreference) { if (mDevicesList.size() >= index) { mDevicesList.add(index, preference); } else { mDevicesList.add(preference); } } else { mDockDevicesList.add(preference); } addPreference(); } private void addPreference() { mPreferenceGroup.removeAll(); mPreferenceGroup.addPreference(mSeeAllPreference); final int size = getDeviceListSize(); for (int i = 0; i < size; i++) { if (DEBUG) { Log.d(TAG, "addPreference() add device : " + mDevicesList.get(i).getTitle()); Loading @@ -160,23 +166,37 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc mDevicesList.get(i).setOrder(i); mPreferenceGroup.addPreference(mDevicesList.get(i)); } if (mDockDevicesList.size() > 0) { for (int i = 0; i < getDockDeviceListSize(MAX_DEVICE_NUM - size); i++) { if (DEBUG) { Log.d(TAG, "addPreference() add dock device : " + mDockDevicesList.get(i).getTitle()); } mDockDevicesList.get(i).setOrder(DOCK_DEVICE_INDEX); mPreferenceGroup.addPreference(mDockDevicesList.get(i)); } } } private int getDeviceListSize() { return mDevicesList.size() >= MAX_DEVICE_NUM ? MAX_DEVICE_NUM : mDevicesList.size(); } private int getDockDeviceListSize(int availableSize) { return mDockDevicesList.size() >= availableSize ? availableSize : mDockDevicesList.size(); } @Override public void onDeviceRemoved(Preference preference) { mPreferenceSize--; if (preference instanceof BluetoothDevicePreference) { mDevicesList.remove(preference); mPreferenceGroup.removeAll(); mPreferenceGroup.addPreference(mSeeAllPreference); final int size = mDevicesList.size() >= MAX_DEVICE_NUM ? MAX_DEVICE_NUM : mDevicesList.size(); for (int i = 0; i < size; i++) { if (DEBUG) { Log.d(TAG, "onDeviceRemoved() add device : " + mDevicesList.get(i).getTitle()); } mDevicesList.get(i).setOrder(i); mPreferenceGroup.addPreference(mDevicesList.get(i)); } else { mDockDevicesList.remove(preference); } addPreference(); updatePreferenceVisibility(); } Loading tests/robotests/src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceControllerTest.java +18 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ import com.android.settings.bluetooth.BluetoothDeviceUpdater; import com.android.settings.connecteddevice.dock.DockUpdater; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.testutils.shadow.ShadowBluetoothAdapter; import com.android.settings.widget.SingleTargetGearPreference; import com.android.settingslib.bluetooth.CachedBluetoothDevice; import org.junit.Before; Loading Loading @@ -187,6 +188,16 @@ public class PreviouslyConnectedDevicePreferenceControllerTest { assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2); } @Test public void onDeviceAdded_addDockDevicePreference_displayIt() { final SingleTargetGearPreference dockPreference = new SingleTargetGearPreference( mContext, null /* AttributeSet */); mPreConnectedDeviceController.onDeviceAdded(dockPreference); assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2); } @Test public void onDeviceAdded_addFourDevicePreference_onlyDisplayThree() { final BluetoothDevicePreference preference1 = new BluetoothDevicePreference( Loading @@ -197,11 +208,14 @@ public class PreviouslyConnectedDevicePreferenceControllerTest { mContext, mCachedDevice3, true, BluetoothDevicePreference.SortType.TYPE_NO_SORT); final BluetoothDevicePreference preference4 = new BluetoothDevicePreference( mContext, mCachedDevice4, true, BluetoothDevicePreference.SortType.TYPE_NO_SORT); final SingleTargetGearPreference dockPreference = new SingleTargetGearPreference( mContext, null /* AttributeSet */); mPreConnectedDeviceController.onDeviceAdded(preference1); mPreConnectedDeviceController.onDeviceAdded(preference2); mPreConnectedDeviceController.onDeviceAdded(preference3); mPreConnectedDeviceController.onDeviceAdded(preference4); mPreConnectedDeviceController.onDeviceAdded(dockPreference); // 3 BluetoothDevicePreference and 1 see all preference assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(4); Loading @@ -211,9 +225,13 @@ public class PreviouslyConnectedDevicePreferenceControllerTest { public void onDeviceRemoved_removeLastDevice_showSeeAllPreference() { final BluetoothDevicePreference preference1 = new BluetoothDevicePreference( mContext, mCachedDevice1, true, BluetoothDevicePreference.SortType.TYPE_NO_SORT); final SingleTargetGearPreference dockPreference = new SingleTargetGearPreference( mContext, null /* AttributeSet */); mPreferenceGroup.addPreference(preference1); mPreferenceGroup.addPreference(dockPreference); mPreConnectedDeviceController.onDeviceRemoved(preference1); mPreConnectedDeviceController.onDeviceRemoved(dockPreference); assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1); } Loading Loading
src/com/android/settings/bluetooth/BluetoothDevicePreference.java +12 −2 Original line number Diff line number Diff line Loading @@ -96,7 +96,6 @@ public final class BluetoothDevicePreference extends GearPreference implements } mCachedDevice = cachedDevice; mCachedDevice.registerCallback(this); mCurrentTime = System.currentTimeMillis(); mType = type; Loading Loading @@ -127,13 +126,24 @@ public final class BluetoothDevicePreference extends GearPreference implements @Override protected void onPrepareForRemoval() { super.onPrepareForRemoval(); mCachedDevice.unregisterCallback(this); if (mDisconnectDialog != null) { mDisconnectDialog.dismiss(); mDisconnectDialog = null; } } @Override public void onAttached() { super.onAttached(); mCachedDevice.registerCallback(this); } @Override public void onDetached() { super.onDetached(); mCachedDevice.unregisterCallback(this); } public CachedBluetoothDevice getBluetoothDevice() { return mCachedDevice; } Loading
src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceController.java +45 −25 Original line number Diff line number Diff line Loading @@ -51,14 +51,15 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); private static final int MAX_DEVICE_NUM = 3; private static final int DOCK_DEVICE_INDEX = 9; private static final String KEY_SEE_ALL = "previously_connected_devices_see_all"; private final List<Preference> mDevicesList = new ArrayList<>(); private final List<Preference> mDockDevicesList = new ArrayList<>(); private PreferenceGroup mPreferenceGroup; private BluetoothDeviceUpdater mBluetoothDeviceUpdater; private DockUpdater mSavedDockUpdater; private int mPreferenceSize; private BluetoothAdapter mBluetoothAdapter; @VisibleForTesting Loading Loading @@ -126,33 +127,38 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc @Override public void onDeviceAdded(Preference preference) { mPreferenceSize++; final List<BluetoothDevice> bluetoothDevices = mBluetoothAdapter.getMostRecentlyConnectedDevices(); final int index = bluetoothDevices.indexOf(((BluetoothDevicePreference) preference) .getBluetoothDevice().getDevice()); final int index = preference instanceof BluetoothDevicePreference ? bluetoothDevices.indexOf(((BluetoothDevicePreference) preference) .getBluetoothDevice().getDevice()) : DOCK_DEVICE_INDEX; if (DEBUG) { Log.d(TAG, "onDeviceAdded() " + preference.getTitle() + ", index of : " + index); for (BluetoothDevice device : bluetoothDevices) { Log.d(TAG, "onDeviceAdded() most recently device : " + device.getName()); } } if (mPreferenceSize <= MAX_DEVICE_NUM) { addPreference(mPreferenceSize, index, preference); } else { addPreference(MAX_DEVICE_NUM, index, preference); } addPreference(index, preference); updatePreferenceVisibility(); } private void addPreference(int size, int index, Preference preference) { private void addPreference(int index, Preference preference) { if (preference instanceof BluetoothDevicePreference) { if (mDevicesList.size() >= index) { mDevicesList.add(index, preference); } else { mDevicesList.add(preference); } } else { mDockDevicesList.add(preference); } addPreference(); } private void addPreference() { mPreferenceGroup.removeAll(); mPreferenceGroup.addPreference(mSeeAllPreference); final int size = getDeviceListSize(); for (int i = 0; i < size; i++) { if (DEBUG) { Log.d(TAG, "addPreference() add device : " + mDevicesList.get(i).getTitle()); Loading @@ -160,23 +166,37 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc mDevicesList.get(i).setOrder(i); mPreferenceGroup.addPreference(mDevicesList.get(i)); } if (mDockDevicesList.size() > 0) { for (int i = 0; i < getDockDeviceListSize(MAX_DEVICE_NUM - size); i++) { if (DEBUG) { Log.d(TAG, "addPreference() add dock device : " + mDockDevicesList.get(i).getTitle()); } mDockDevicesList.get(i).setOrder(DOCK_DEVICE_INDEX); mPreferenceGroup.addPreference(mDockDevicesList.get(i)); } } } private int getDeviceListSize() { return mDevicesList.size() >= MAX_DEVICE_NUM ? MAX_DEVICE_NUM : mDevicesList.size(); } private int getDockDeviceListSize(int availableSize) { return mDockDevicesList.size() >= availableSize ? availableSize : mDockDevicesList.size(); } @Override public void onDeviceRemoved(Preference preference) { mPreferenceSize--; if (preference instanceof BluetoothDevicePreference) { mDevicesList.remove(preference); mPreferenceGroup.removeAll(); mPreferenceGroup.addPreference(mSeeAllPreference); final int size = mDevicesList.size() >= MAX_DEVICE_NUM ? MAX_DEVICE_NUM : mDevicesList.size(); for (int i = 0; i < size; i++) { if (DEBUG) { Log.d(TAG, "onDeviceRemoved() add device : " + mDevicesList.get(i).getTitle()); } mDevicesList.get(i).setOrder(i); mPreferenceGroup.addPreference(mDevicesList.get(i)); } else { mDockDevicesList.remove(preference); } addPreference(); updatePreferenceVisibility(); } Loading
tests/robotests/src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceControllerTest.java +18 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ import com.android.settings.bluetooth.BluetoothDeviceUpdater; import com.android.settings.connecteddevice.dock.DockUpdater; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.testutils.shadow.ShadowBluetoothAdapter; import com.android.settings.widget.SingleTargetGearPreference; import com.android.settingslib.bluetooth.CachedBluetoothDevice; import org.junit.Before; Loading Loading @@ -187,6 +188,16 @@ public class PreviouslyConnectedDevicePreferenceControllerTest { assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2); } @Test public void onDeviceAdded_addDockDevicePreference_displayIt() { final SingleTargetGearPreference dockPreference = new SingleTargetGearPreference( mContext, null /* AttributeSet */); mPreConnectedDeviceController.onDeviceAdded(dockPreference); assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2); } @Test public void onDeviceAdded_addFourDevicePreference_onlyDisplayThree() { final BluetoothDevicePreference preference1 = new BluetoothDevicePreference( Loading @@ -197,11 +208,14 @@ public class PreviouslyConnectedDevicePreferenceControllerTest { mContext, mCachedDevice3, true, BluetoothDevicePreference.SortType.TYPE_NO_SORT); final BluetoothDevicePreference preference4 = new BluetoothDevicePreference( mContext, mCachedDevice4, true, BluetoothDevicePreference.SortType.TYPE_NO_SORT); final SingleTargetGearPreference dockPreference = new SingleTargetGearPreference( mContext, null /* AttributeSet */); mPreConnectedDeviceController.onDeviceAdded(preference1); mPreConnectedDeviceController.onDeviceAdded(preference2); mPreConnectedDeviceController.onDeviceAdded(preference3); mPreConnectedDeviceController.onDeviceAdded(preference4); mPreConnectedDeviceController.onDeviceAdded(dockPreference); // 3 BluetoothDevicePreference and 1 see all preference assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(4); Loading @@ -211,9 +225,13 @@ public class PreviouslyConnectedDevicePreferenceControllerTest { public void onDeviceRemoved_removeLastDevice_showSeeAllPreference() { final BluetoothDevicePreference preference1 = new BluetoothDevicePreference( mContext, mCachedDevice1, true, BluetoothDevicePreference.SortType.TYPE_NO_SORT); final SingleTargetGearPreference dockPreference = new SingleTargetGearPreference( mContext, null /* AttributeSet */); mPreferenceGroup.addPreference(preference1); mPreferenceGroup.addPreference(dockPreference); mPreConnectedDeviceController.onDeviceRemoved(preference1); mPreConnectedDeviceController.onDeviceRemoved(dockPreference); assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1); } Loading