Loading src/com/android/settings/bluetooth/BluetoothSliceBuilder.java +29 −6 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.net.Uri; import android.provider.SettingsSlicesContract; import android.util.Log; import androidx.core.graphics.drawable.IconCompat; import androidx.slice.Slice; Loading @@ -36,10 +37,16 @@ import androidx.slice.builders.SliceAction; import com.android.settings.R; import com.android.settings.SubSettings; import com.android.settings.connecteddevice.BluetoothDashboardFragment; import com.android.settings.network.SatelliteRepository; import com.android.settings.slices.CustomSliceRegistry; import com.android.settings.slices.SliceBroadcastReceiver; import com.android.settings.slices.SliceBuilderUtils; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; /** * Utility class to build a Bluetooth Slice, and handle all associated actions. */ Loading Loading @@ -80,18 +87,34 @@ public class BluetoothSliceBuilder { final PendingIntent primaryAction = getPrimaryAction(context); final SliceAction primarySliceAction = SliceAction.createDeeplink(primaryAction, icon, ListBuilder.ICON_IMAGE, title); RowBuilder rowBuilder = new RowBuilder(); rowBuilder.setTitle(title); rowBuilder.setPrimaryAction(primarySliceAction); if (!isSatelliteOn(context)) { final SliceAction toggleSliceAction = SliceAction.createToggle(toggleAction, null /* actionTitle */, isBluetoothEnabled); rowBuilder.addEndItem(toggleSliceAction); } return new ListBuilder(context, CustomSliceRegistry.BLUETOOTH_URI, ListBuilder.INFINITY) .setAccentColor(color) .addRow(new RowBuilder() .setTitle(title) .addEndItem(toggleSliceAction) .setPrimaryAction(primarySliceAction)) .addRow(rowBuilder) .build(); } private static boolean isSatelliteOn(Context context) { boolean result = false; SatelliteRepository satelliteRepository = new SatelliteRepository(context); try { result = satelliteRepository.requestIsSessionStarted( Executors.newSingleThreadExecutor()).get(3000, TimeUnit.MILLISECONDS); } catch (InterruptedException | ExecutionException | TimeoutException e) { Log.e(TAG, "Error to get satellite status : " + e); } return result; } public static Intent getIntent(Context context) { final String screenTitle = context.getText(R.string.bluetooth_settings_title).toString(); final Uri contentUri = new Uri.Builder().appendPath( Loading Loading
src/com/android/settings/bluetooth/BluetoothSliceBuilder.java +29 −6 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.net.Uri; import android.provider.SettingsSlicesContract; import android.util.Log; import androidx.core.graphics.drawable.IconCompat; import androidx.slice.Slice; Loading @@ -36,10 +37,16 @@ import androidx.slice.builders.SliceAction; import com.android.settings.R; import com.android.settings.SubSettings; import com.android.settings.connecteddevice.BluetoothDashboardFragment; import com.android.settings.network.SatelliteRepository; import com.android.settings.slices.CustomSliceRegistry; import com.android.settings.slices.SliceBroadcastReceiver; import com.android.settings.slices.SliceBuilderUtils; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; /** * Utility class to build a Bluetooth Slice, and handle all associated actions. */ Loading Loading @@ -80,18 +87,34 @@ public class BluetoothSliceBuilder { final PendingIntent primaryAction = getPrimaryAction(context); final SliceAction primarySliceAction = SliceAction.createDeeplink(primaryAction, icon, ListBuilder.ICON_IMAGE, title); RowBuilder rowBuilder = new RowBuilder(); rowBuilder.setTitle(title); rowBuilder.setPrimaryAction(primarySliceAction); if (!isSatelliteOn(context)) { final SliceAction toggleSliceAction = SliceAction.createToggle(toggleAction, null /* actionTitle */, isBluetoothEnabled); rowBuilder.addEndItem(toggleSliceAction); } return new ListBuilder(context, CustomSliceRegistry.BLUETOOTH_URI, ListBuilder.INFINITY) .setAccentColor(color) .addRow(new RowBuilder() .setTitle(title) .addEndItem(toggleSliceAction) .setPrimaryAction(primarySliceAction)) .addRow(rowBuilder) .build(); } private static boolean isSatelliteOn(Context context) { boolean result = false; SatelliteRepository satelliteRepository = new SatelliteRepository(context); try { result = satelliteRepository.requestIsSessionStarted( Executors.newSingleThreadExecutor()).get(3000, TimeUnit.MILLISECONDS); } catch (InterruptedException | ExecutionException | TimeoutException e) { Log.e(TAG, "Error to get satellite status : " + e); } return result; } public static Intent getIntent(Context context) { final String screenTitle = context.getText(R.string.bluetooth_settings_title).toString(); final Uri contentUri = new Uri.Builder().appendPath( Loading