Merge "[Audiosharing] Move entry preference out of group category" into main
This commit is contained in:
@@ -78,8 +78,6 @@ public class AudioSharingDevicePreferenceController extends BasePreferenceContro
|
||||
|
||||
private static final String TAG = "AudioSharingDevicePrefController";
|
||||
private static final String KEY = "audio_sharing_device_list";
|
||||
private static final String KEY_AUDIO_SHARING_SETTINGS =
|
||||
"connected_device_audio_sharing_settings";
|
||||
|
||||
@Nullable private final LocalBluetoothManager mBtManager;
|
||||
@Nullable private final CachedBluetoothDeviceManager mDeviceManager;
|
||||
@@ -89,7 +87,6 @@ public class AudioSharingDevicePreferenceController extends BasePreferenceContro
|
||||
private final Executor mExecutor;
|
||||
private final MetricsFeatureProvider mMetricsFeatureProvider;
|
||||
@Nullable private PreferenceGroup mPreferenceGroup;
|
||||
@Nullable private Preference mAudioSharingSettingsPreference;
|
||||
@Nullable private BluetoothDeviceUpdater mBluetoothDeviceUpdater;
|
||||
@Nullable private DashboardFragment mFragment;
|
||||
@Nullable private AudioSharingDialogHandler mDialogHandler;
|
||||
@@ -280,13 +277,8 @@ public class AudioSharingDevicePreferenceController extends BasePreferenceContro
|
||||
super.displayPreference(screen);
|
||||
mPreferenceGroup = screen.findPreference(KEY);
|
||||
if (mPreferenceGroup != null) {
|
||||
mAudioSharingSettingsPreference =
|
||||
mPreferenceGroup.findPreference(KEY_AUDIO_SHARING_SETTINGS);
|
||||
mPreferenceGroup.setVisible(false);
|
||||
}
|
||||
if (mAudioSharingSettingsPreference != null) {
|
||||
mAudioSharingSettingsPreference.setVisible(false);
|
||||
}
|
||||
|
||||
if (isAvailable()) {
|
||||
if (mBluetoothDeviceUpdater != null) {
|
||||
@@ -320,11 +312,8 @@ public class AudioSharingDevicePreferenceController extends BasePreferenceContro
|
||||
@Override
|
||||
public void onDeviceAdded(Preference preference) {
|
||||
if (mPreferenceGroup != null) {
|
||||
if (mPreferenceGroup.getPreferenceCount() == 1) {
|
||||
if (mPreferenceGroup.getPreferenceCount() == 0) {
|
||||
mPreferenceGroup.setVisible(true);
|
||||
if (mAudioSharingSettingsPreference != null) {
|
||||
mAudioSharingSettingsPreference.setVisible(true);
|
||||
}
|
||||
}
|
||||
mPreferenceGroup.addPreference(preference);
|
||||
}
|
||||
@@ -334,11 +323,8 @@ public class AudioSharingDevicePreferenceController extends BasePreferenceContro
|
||||
public void onDeviceRemoved(Preference preference) {
|
||||
if (mPreferenceGroup != null) {
|
||||
mPreferenceGroup.removePreference(preference);
|
||||
if (mPreferenceGroup.getPreferenceCount() == 1) {
|
||||
if (mPreferenceGroup.getPreferenceCount() == 0) {
|
||||
mPreferenceGroup.setVisible(false);
|
||||
if (mAudioSharingSettingsPreference != null) {
|
||||
mAudioSharingSettingsPreference.setVisible(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,6 +45,9 @@ import java.util.concurrent.Executors;
|
||||
public class AudioSharingPreferenceController extends BasePreferenceController
|
||||
implements DefaultLifecycleObserver, BluetoothCallback {
|
||||
private static final String TAG = "AudioSharingPreferenceController";
|
||||
private static final String CONNECTED_DEVICES_PREF_KEY =
|
||||
"connected_device_audio_sharing_settings";
|
||||
private static final String CONNECTION_PREFERENCES_PREF_KEY = "audio_sharing_settings";
|
||||
|
||||
@Nullable private final LocalBluetoothManager mBtManager;
|
||||
@Nullable private final BluetoothEventManager mEventManager;
|
||||
@@ -57,7 +60,7 @@ public class AudioSharingPreferenceController extends BasePreferenceController
|
||||
new BluetoothLeBroadcast.Callback() {
|
||||
@Override
|
||||
public void onBroadcastStarted(int reason, int broadcastId) {
|
||||
refreshSummary();
|
||||
refreshPreference();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -69,7 +72,7 @@ public class AudioSharingPreferenceController extends BasePreferenceController
|
||||
|
||||
@Override
|
||||
public void onBroadcastStopped(int reason, int broadcastId) {
|
||||
refreshSummary();
|
||||
refreshPreference();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -111,6 +114,7 @@ public class AudioSharingPreferenceController extends BasePreferenceController
|
||||
}
|
||||
mEventManager.registerCallback(this);
|
||||
mBroadcast.registerServiceCallBack(mExecutor, mBroadcastCallback);
|
||||
updateVisibility();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -131,6 +135,13 @@ public class AudioSharingPreferenceController extends BasePreferenceController
|
||||
public void displayPreference(@NonNull PreferenceScreen screen) {
|
||||
super.displayPreference(screen);
|
||||
mPreference = screen.findPreference(getPreferenceKey());
|
||||
// super.displayPreference set the visibility based on isAvailable()
|
||||
// immediately set the preference invisible on Connected devices page to avoid the audio
|
||||
// sharing entrance being shown before updateVisibility(need binder call) take effects.
|
||||
if (mPreference != null && CONNECTED_DEVICES_PREF_KEY.equals(getPreferenceKey())) {
|
||||
mPreference.setVisible(false);
|
||||
}
|
||||
updateVisibility();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -141,14 +152,51 @@ public class AudioSharingPreferenceController extends BasePreferenceController
|
||||
|
||||
@Override
|
||||
public CharSequence getSummary() {
|
||||
return BluetoothUtils.isBroadcasting(mBtManager)
|
||||
? mContext.getString(R.string.audio_sharing_summary_on)
|
||||
: mContext.getString(R.string.audio_sharing_summary_off);
|
||||
return switch (getPreferenceKey()) {
|
||||
case CONNECTION_PREFERENCES_PREF_KEY -> BluetoothUtils.isBroadcasting(mBtManager)
|
||||
? mContext.getString(R.string.audio_sharing_summary_on)
|
||||
: mContext.getString(R.string.audio_sharing_summary_off);
|
||||
default -> "";
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBluetoothStateChanged(@AdapterState int bluetoothState) {
|
||||
refreshSummary();
|
||||
refreshPreference();
|
||||
}
|
||||
|
||||
private void refreshPreference() {
|
||||
switch (getPreferenceKey()) {
|
||||
// Audio sharing entrance on Connected devices page has no summary, but its visibility
|
||||
// will change based on audio sharing state
|
||||
case CONNECTED_DEVICES_PREF_KEY -> updateVisibility();
|
||||
// Audio sharing entrance on Connection preferences page always show up, but its summary
|
||||
// will change based on audio sharing state
|
||||
case CONNECTION_PREFERENCES_PREF_KEY -> refreshSummary();
|
||||
}
|
||||
}
|
||||
|
||||
private void updateVisibility() {
|
||||
if (mPreference == null) {
|
||||
return;
|
||||
}
|
||||
switch (getPreferenceKey()) {
|
||||
case CONNECTED_DEVICES_PREF_KEY -> {
|
||||
var unused =
|
||||
ThreadUtils.postOnBackgroundThread(
|
||||
() -> {
|
||||
boolean visible = BluetoothUtils.isBroadcasting(mBtManager);
|
||||
AudioSharingUtils.postOnMainThread(
|
||||
mContext,
|
||||
() -> {
|
||||
// Check nullability to pass NullAway check
|
||||
if (mPreference != null) {
|
||||
mPreference.setVisible(visible);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void refreshSummary() {
|
||||
|
||||
Reference in New Issue
Block a user