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

Commit 275f21d3 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: 2563b5f6

Change-Id: Ic23a9891a8f667e48c41b0f188a25d5afd4a396e
parents 4f211b3f 2563b5f6
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();