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

Commit 1d80e977 authored by Victoria Lease's avatar Victoria Lease
Browse files

Compose singleLine & textAllCaps transforms

TextView only supports a single TransformationMethod per TextView, and
singleLine and textAllCaps are both implemented as
TransformationMethods. Composing both operations into a single
TransformationMethod gives us all-caps text (if requested by
kg_use_all_caps) on a single line.

Bug: 11421105
Change-Id: I069721b887ea90b8daf2af2cf82081319e499962
parent ee4c8464
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -32,12 +32,10 @@
        android:id="@+id/carrier_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:ellipsize="marquee"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textSize="@dimen/kg_status_line_font_size"
        android:textColor="?android:attr/textColorSecondary"
        android:textAllCaps="@bool/kg_use_all_caps" />
        android:textColor="?android:attr/textColorSecondary" />

    <LinearLayout
        android:layout_width="match_parent"
+27 −0
Original line number Diff line number Diff line
@@ -17,14 +17,18 @@
package com.android.keyguard;

import android.content.Context;
import android.text.method.SingleLineTransformationMethod;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.View;
import android.widget.TextView;

import com.android.internal.telephony.IccCardConstants;
import com.android.internal.telephony.IccCardConstants.State;
import com.android.internal.widget.LockPatternUtils;

import java.util.Locale;

public class CarrierText extends TextView {
    private static CharSequence mSeparator;

@@ -77,6 +81,8 @@ public class CarrierText extends TextView {
    public CarrierText(Context context, AttributeSet attrs) {
        super(context, attrs);
        mLockPatternUtils = new LockPatternUtils(mContext);
        boolean useAllCaps = mContext.getResources().getBoolean(R.bool.kg_use_all_caps);
        setTransformationMethod(new CarrierTextTransformationMethod(mContext, useAllCaps));
    }

    protected void updateCarrierText(State simState, CharSequence plmn, CharSequence spn) {
@@ -258,4 +264,25 @@ public class CarrierText extends TextView {

        return mContext.getText(carrierHelpTextId);
    }

    private class CarrierTextTransformationMethod extends SingleLineTransformationMethod {
        private final Locale mLocale;
        private final boolean mAllCaps;

        public CarrierTextTransformationMethod(Context context, boolean allCaps) {
            mLocale = context.getResources().getConfiguration().locale;
            mAllCaps = allCaps;
        }

        @Override
        public CharSequence getTransformation(CharSequence source, View view) {
            source = super.getTransformation(source, view);

            if (mAllCaps && source != null) {
                source = source.toString().toUpperCase(mLocale);
            }

            return source;
        }
    }
}