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

Commit 3f80d1b6 authored by Stanley Wang's avatar Stanley Wang
Browse files

Implement the Copyable interface to PhoneNumberPreferenceController

Change-Id: I70085cffe13047ac808d1bf08a467f693b1d8737
Fixes: 118398321
Test: manual and robotests
parent d4dfba42
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -10343,4 +10343,7 @@
    <string name="contextual_card_feedback_send">Send feedback</string>
    <!-- String for contextual card feedback dialog [CHAR LIMIT=NONE] -->
    <string name="contextual_card_feedback_confirm_message">Would you like to give us feedback on this suggestion?</string>
    <!-- Toast message for copy action of Copyable Slice [CHAR LIMIT=NONE] -->
    <string name="copyable_slice_toast"><xliff:g id="copy_content" example="Phone number">%1$s</xliff:g> copied to clipboard.</string>
</resources>
+20 −2
Original line number Diff line number Diff line
@@ -16,6 +16,10 @@

package com.android.settings.deviceinfo;

import static android.content.Context.CLIPBOARD_SERVICE;

import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
@@ -23,6 +27,7 @@ import android.telephony.TelephonyManager;
import android.text.BidiFormatter;
import android.text.TextDirectionHeuristics;
import android.text.TextUtils;
import android.widget.Toast;

import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
@@ -30,12 +35,14 @@ import androidx.preference.PreferenceScreen;

import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.slices.Copyable;
import com.android.settingslib.DeviceInfoUtils;

import java.util.ArrayList;
import java.util.List;

public class PhoneNumberPreferenceController extends BasePreferenceController {
public class PhoneNumberPreferenceController extends BasePreferenceController implements
        Copyable {

    private final static String KEY_PHONE_NUMBER = "phone_number";

@@ -91,6 +98,17 @@ public class PhoneNumberPreferenceController extends BasePreferenceController {
        return true;
    }

    @Override
    public void copy() {
        final ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService(
                CLIPBOARD_SERVICE);
        clipboard.setPrimaryClip(ClipData.newPlainText("text", getFirstPhoneNumber()));

        final String toast = mContext.getString(R.string.copyable_slice_toast,
                mContext.getText(R.string.status_number));
        Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
    }

    private CharSequence getFirstPhoneNumber() {
        final List<SubscriptionInfo> subscriptionInfoList =
                mSubscriptionManager.getActiveSubscriptionInfoList();
+1 −1
Original line number Diff line number Diff line
@@ -19,7 +19,7 @@ package com.android.settings.slices;
/**
 * Provide the copy ability for preference controller to copy the data to the clipboard.
 */
public interface CopyableSlice {
public interface Copyable {
    /**
     * Copy the key slice information to the clipboard.
     * It is highly recommended to show the toast to notify users when implemented this function.
+2 −2
Original line number Diff line number Diff line
@@ -185,7 +185,7 @@ public class SliceBroadcastReceiver extends BroadcastReceiver {

        final BasePreferenceController controller = getPreferenceController(context, key);

        if (!(controller instanceof CopyableSlice)) {
        if (!(controller instanceof Copyable)) {
            throw new IllegalArgumentException(
                    "Copyable action passed for a non-copyable key:" + key);
        }
@@ -198,7 +198,7 @@ public class SliceBroadcastReceiver extends BroadcastReceiver {
            return;
        }

        ((CopyableSlice) controller).copy();
        ((Copyable) controller).copy();
    }

    /**
+1 −1
Original line number Diff line number Diff line
@@ -94,7 +94,7 @@ public class SliceBuilderUtils {
            return buildUnavailableSlice(context, sliceData);
        }

        if (controller instanceof CopyableSlice) {
        if (controller instanceof Copyable) {
            return buildCopyableSlice(context, sliceData, controller);
        }

Loading