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

Commit 1af86c34 authored by Yiyi Shen's avatar Yiyi Shen
Browse files

[Audiosharing] Add audio sharing stream name preference.

Flagged with enable_le_audio_sharing

Bug: 305620450
Test: Manual
Change-Id: I1502fb824bcf612d069ee24d7af67afda5e997bb
parent e9d3e904
Loading
Loading
Loading
Loading
+25 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
  ~ Copyright (C) 2023 The Android Open Source Project
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~      http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->

<ImageButton xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/button_icon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:minWidth="@dimen/two_target_min_width"
    android:minHeight="@dimen/min_tap_target_size"
    android:layout_gravity="center"
    android:background="?android:attr/selectableItemBackground"/>
 No newline at end of file
+6 −1
Original line number Diff line number Diff line
@@ -26,6 +26,12 @@
        settings:controller="com.android.settings.connecteddevice.audiosharing.CallsAndAlarmsPreferenceController"
        android:summary=""/>

    <com.android.settings.connecteddevice.audiosharing.AudioSharingNamePreference
        android:key="audio_sharing_stream_name"
        android:title="Stream name"
        android:summary="********"
        settings:controller="com.android.settings.connecteddevice.audiosharing.AudioSharingNamePreferenceController"/>

    <PreferenceCategory
        android:key="audio_streams_settings_category"
        android:title="@string/audio_sharing_streams_category_title"
@@ -38,5 +44,4 @@
            android:icon="@drawable/ic_chevron_right_24dp" />

    </PreferenceCategory>

</PreferenceScreen>
 No newline at end of file
+64 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2023 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.settings.connecteddevice.audiosharing;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.ImageButton;

import androidx.preference.PreferenceViewHolder;

import com.android.settings.R;
import com.android.settings.widget.ValidatedEditTextPreference;

public class AudioSharingNamePreference extends ValidatedEditTextPreference {
    private static final String TAG = "AudioSharingNamePreference";

    public AudioSharingNamePreference(
            Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
        initialize();
    }

    public AudioSharingNamePreference(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        initialize();
    }

    public AudioSharingNamePreference(Context context, AttributeSet attrs) {
        super(context, attrs);
        initialize();
    }

    public AudioSharingNamePreference(Context context) {
        super(context);
        initialize();
    }

    private void initialize() {
        setLayoutResource(
                com.android.settingslib.widget.preference.twotarget.R.layout.preference_two_target);
        setWidgetLayoutResource(R.layout.preference_widget_qrcode);
    }

    @Override
    public void onBindViewHolder(PreferenceViewHolder holder) {
        super.onBindViewHolder(holder);
        final ImageButton shareButton = (ImageButton) holder.findViewById(R.id.button_icon);
        shareButton.setImageDrawable(getContext().getDrawable(R.drawable.ic_qrcode_24dp));
    }
}
+85 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2023 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.settings.connecteddevice.audiosharing;

import android.content.Context;

import androidx.annotation.NonNull;
import androidx.lifecycle.DefaultLifecycleObserver;
import androidx.lifecycle.LifecycleOwner;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;

import com.android.settings.core.BasePreferenceController;
import com.android.settings.flags.Flags;
import com.android.settings.widget.ValidatedEditTextPreference;

public class AudioSharingNamePreferenceController extends BasePreferenceController
        implements ValidatedEditTextPreference.Validator,
                Preference.OnPreferenceChangeListener,
                DefaultLifecycleObserver {

    private static final String TAG = "AudioSharingNamePreferenceController";

    private static final String PREF_KEY = "audio_sharing_stream_name";

    protected Preference mPreference;

    private AudioSharingNameTextValidator mAudioSharingNameTextValidator;

    public AudioSharingNamePreferenceController(Context context) {
        super(context, PREF_KEY);
        mAudioSharingNameTextValidator = new AudioSharingNameTextValidator();
    }

    @Override
    public int getAvailabilityStatus() {
        return Flags.enableLeAudioSharing() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
    }

    @Override
    public String getPreferenceKey() {
        return PREF_KEY;
    }

    @Override
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        // TODO: update broadcast when name is changed.
        return true;
    }

    @Override
    public void displayPreference(PreferenceScreen screen) {
        super.displayPreference(screen);
        mPreference = screen.findPreference(getPreferenceKey());
    }

    @Override
    public boolean isTextValid(String value) {
        return mAudioSharingNameTextValidator.isTextValid(value);
    }

    @Override
    public void onStart(@NonNull LifecycleOwner owner) {
        // TODO
    }

    @Override
    public void onStop(@NonNull LifecycleOwner owner) {
        // TODO
    }
}
+27 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2023 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.settings.connecteddevice.audiosharing;

import com.android.settings.widget.ValidatedEditTextPreference;

public class AudioSharingNameTextValidator implements ValidatedEditTextPreference.Validator {
    @Override
    public boolean isTextValid(String value) {
        // TODO: Add validate rule if applicable.
        return true;
    }
}