Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e91214d3 authored by Tom Hsu's avatar Tom Hsu Committed by Android (Google) Code Review
Browse files

Merge "[Satellite] Hide BT switch in Settings search when started Satellite." into main

parents 7e364ed8 0af43e26
Loading
Loading
Loading
Loading
+29 −6
Original line number Diff line number Diff line
@@ -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;
@@ -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.
 */
@@ -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(