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

Commit 9845b9f0 authored by Automerger Merge Worker's avatar Automerger Merge Worker
Browse files

Merge "Append status to title for the disconnected Bluetooth device" into...

Merge "Append status to title for the disconnected Bluetooth device" into rvc-dev am: d09ecc3e am: 6b008867

Change-Id: I739b9860174ae08584b0d4c941a9d2976653ec56
parents 4f211b3f 6b008867
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -11637,6 +11637,8 @@
    <string name="media_output_panel_title">Switch output</string>
    <!-- Summary for represent which device is playing media [CHAR LIMIT=NONE] -->
    <string name="media_output_panel_summary_of_playing_device">Currently playing on <xliff:g id="device_name" example="Bose headphone">%1$s</xliff:g></string>
    <!-- Summary for disconnected status [CHAR LIMIT=50] -->
    <string name="media_output_disconnected_status"><xliff:g id="device_name" example="My device">%1$s</xliff:g> (disconnected)</string>
    <!-- Label for the title on wfc disclaimer fragment. [CHAR LIMIT=40] -->
    <string name="wfc_disclaimer_title_text">Important information</string>
+21 −4
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.settings.media;

import static android.app.slice.Slice.EXTRA_RANGE_VALUE;
import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE;

import static com.android.settings.slices.CustomSliceRegistry.MEDIA_OUTPUT_SLICE_URI;

@@ -24,9 +25,12 @@ import android.app.PendingIntent;
import android.bluetooth.BluetoothAdapter;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.text.SpannableString;
import android.text.TextUtils;
import android.text.style.ForegroundColorSpan;
import android.util.Log;

import androidx.annotation.VisibleForTesting;
@@ -162,7 +166,7 @@ public class MediaOutputSlice implements CustomSliceable {
    }

    private ListBuilder.RowBuilder getMediaDeviceRow(MediaDevice device) {
        final String title = device.getName();
        final String deviceName = device.getName();
        final PendingIntent broadcastAction =
                getBroadcastIntent(mContext, device.getId(), device.hashCode());
        final IconCompat deviceIcon = getDeviceIconCompat(device);
@@ -170,9 +174,22 @@ public class MediaOutputSlice implements CustomSliceable {
        final ListBuilder.RowBuilder rowBuilder = new ListBuilder.RowBuilder()
                .setTitleItem(deviceIcon, ListBuilder.ICON_IMAGE)
                .setPrimaryAction(SliceAction.create(broadcastAction, deviceIcon,
                        ListBuilder.ICON_IMAGE, title))
                .setTitle(title)
                .setSubtitle(device.isConnected() ? null : device.getSummary());
                        ListBuilder.ICON_IMAGE, deviceName));
        // Append status to tile only for the disconnected Bluetooth device.
        if (device.getDeviceType() == MediaDevice.MediaDeviceType.TYPE_BLUETOOTH_DEVICE
                && !device.isConnected()) {
            final SpannableString spannableTitle = new SpannableString(
                    mContext.getString(R.string.media_output_disconnected_status, deviceName));
            spannableTitle.setSpan(new ForegroundColorSpan(Color.GRAY), deviceName.length(),
                    spannableTitle.length(), SPAN_EXCLUSIVE_EXCLUSIVE);
            rowBuilder.setTitle(spannableTitle);
            rowBuilder.setPrimaryAction(SliceAction.create(broadcastAction, deviceIcon,
                    ListBuilder.ICON_IMAGE, spannableTitle));
        } else {
            rowBuilder.setTitle(deviceName);
            rowBuilder.setPrimaryAction(SliceAction.create(broadcastAction, deviceIcon,
                    ListBuilder.ICON_IMAGE, deviceName));
        }

        return rowBuilder;
    }
+21 −0
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ import androidx.slice.core.SliceAction;
import androidx.slice.core.SliceQuery;
import androidx.slice.widget.SliceLiveData;

import com.android.settings.R;
import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
import com.android.settingslib.media.LocalMediaManager;
import com.android.settingslib.media.MediaDevice;
@@ -155,6 +156,26 @@ public class MediaOutputSliceTest {
        assertThat(primaryAction.getTitle().toString()).isEqualTo(TEST_DEVICE_1_NAME);
    }

    @Test
    public void getSlice_disconnectedBluetooth_verifyTitle() {
        mDevices.clear();
        final MediaDevice device = mock(MediaDevice.class);
        when(device.getName()).thenReturn(TEST_DEVICE_1_NAME);
        when(device.getIcon()).thenReturn(mTestDrawable);
        when(device.getMaxVolume()).thenReturn(100);
        when(device.isConnected()).thenReturn(false);

        mDevices.add(device);
        mMediaDeviceUpdateWorker.onDeviceListUpdate(mDevices);

        final Slice mediaSlice = mMediaOutputSlice.getSlice();
        final SliceMetadata metadata = SliceMetadata.from(mContext, mediaSlice);

        final SliceAction primaryAction = metadata.getPrimaryAction();
        assertThat(primaryAction.getTitle().toString()).isEqualTo(TEST_DEVICE_1_NAME + " ("
                + mContext.getText(R.string.media_output_disconnected_status) + ")");
    }

    @Test
    public void onNotifyChange_foundMediaDevice_connect() {
        mDevices.clear();